使用另一个数组的Numpy数组赋值

时间:2018-01-29 13:19:52

标签: python arrays numpy

是否可以使用另一个数组沿列方式为Numpy数组的某些行索引赋值? 例如:

x = 
[[0,0],
[0,0],
[0,0],
[0,0]]

a = 
[[0],
[1],
[0],
[1]]

the resulting x after some operation, op(x, a) = 1, is

x=
[[1,0],
[0,1],
[1,0],
[0,1]]

1 个答案:

答案 0 :(得分:3)

这可能是您所需要的:

import numpy as np

x = np.array([[0,0],
[0,0],
[0,0],
[0,0]])

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

for idx, i in enumerate(a):
    x[idx, i] = 1 

或者,没有循环:

x[range(x.shape[0]), a.ravel()] = 1 

# x
# array([[1, 0],
#        [0, 1],
#        [1, 0],
#        [0, 1]])