I have an array A
. I am printing a new array result
by considering specific locations according to list J
. However, I want to insert element 0
for all other positions. For example, I want to insert 0
at [0,2,3]
locations of result
since these are not included in J
. I show the current and expected outputs.
import numpy as np
A=np.array([[1,2,3,4,5],
[6,7,8,9,10],
[11,12,13,14,15],
[16,17,18,19,20],
[21,22,23,24,25]])
J=[[1, 4]]
result=np.array([list(A[i]) for i in J[0]])
print([result])
The current output is
[array([[ 6, 7, 8, 9, 10],
[21, 22, 23, 24, 25]])]
The expected output is
[array([[0, 0, 0, 0, 0],
[ 6, 7, 8, 9, 10],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[21, 22, 23, 24, 25]])]
CodePudding user response:
You can use:
out = np.zeros_like(A)
out[J[0]] = A[J[0]]
Output:
array([[ 0, 0, 0, 0, 0],
[ 6, 7, 8, 9, 10],
[ 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0],
[21, 22, 23, 24, 25]])
Or if you want to modify A
in place:
A[~np.isin(np.arange(A.shape[0]), J[0])] = 0