Edit every other item in an array

坚强是说给别人听的谎言 提交于 2020-02-27 09:26:44

问题


matrix = np.array([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]])
vector = np.array([0,0,0,0])

For vectors, you can edit every other element like so

vector[1::2] = 1

This gives

np.array([0,1,0,1])

However;

matrix[1::2] = 1

yields

np.array([[0,0,0,0],[1,1,1,1],[0,0,0,0],[1,1,1,1]])

I would like the output

np.array([[0,1,0,1],[0,1,0,1],[0,1,0,1],[0,1,0,1]])

There is a brute force approach to take the shape of the array, flatten it, use [1::2], and reshape, but i'm sure there is a more elegant solution i am missing.

Any help would be appreciated.


回答1:


You can do something similar with multidimensional indexing

>>> matrix
array([[0, 0, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 0]])
>>> matrix[:,1::2] = 1
>>> matrix
array([[0, 1, 0, 1],
       [0, 1, 0, 1],
       [0, 1, 0, 1],
       [0, 1, 0, 1]])


来源:https://stackoverflow.com/questions/59734439/edit-every-other-item-in-an-array

标签