For example, I have a matrix like this:
In [2]: a = np.arange(12).reshape(3, 4)
In [3]: a
Out[3]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8,
This aproach works for rectangular matrices too. Create a boolean mask trough broadcasting:
a = np.arange(12).reshape(3, 4)
idx = np.array([1, 2, 0])
mask=np.arange(a.shape[1]) >= idx[:,None]
mask
#array([[False, True, True, True],
# [False, False, True, True],
# [ True, True, True, True]], dtype=bool)
Make your placeholder -1
, for example, and set the values of a
where mask
is true equal to that placeholder:
x = -1
a[mask] = x
a
#array([[ 0, -1, -1, -1],
# [ 4, 5, -1, -1],
# [-1, -1, -1, -1]])
An expected, exact, output is not provided. So, I think the followings may help you in general.
>>> a = np.arange(12).reshape(3, 4)
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> row = np.array([0, 1, 2])
>>> col = np.array([1, 2, 0])
>>> a[row, col]
array([1, 6, 8])
You can set the row
and col
s of a
to an value:
>>> a[row, col] = 0
>>> a
array([[ 0, 0, 2, 3],
[ 4, 5, 0, 7],
[ 0, 9, 10, 11]])