Home > Mobile >  Having zero rows at specific positions in array in Python
Having zero rows at specific positions in array in Python

Time:12-29

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
  • Related