我在处理大数据时遇到了一些问题。但现在,让我们假设我有一个用零填充的NumPy数组。
>>> x = np.zeros((3,3))
>>> x
array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])
现在我想把一些零值改成具体的数据,我已经给出了我想要更改的单元格的索引。
>>> y = np.array([[0,0],[1,1],[2,2]])
>>> y
array([[0, 0],
[1, 1],
[2, 2]])
我有一个数组,包含所需的(目前是随机的)数字,如下:
>>> z = np.array(np.random.rand(3))
>>> z
array([ 0.04988558, 0.87512891, 0.4288157 ])
现在我想我可以这样做:
>>> x[y] = z
但是它会像这样填充整个数组
>>> x
array([[ 0.04988558, 0.87512891, 0.4288157 ],
[ 0.04988558, 0.87512891, 0.4288157 ],
[ 0.04988558, 0.87512891, 0.4288157 ]])
But I was hoping to get
>>> x
array([[ 0.04988558, 0, 0 ],
[ 0, 0.87512891, 0 ],
[ 0, 0, 0.4288157 ]])
编辑
现在我使用的是对角线索引,但如果我的索引不仅仅是对角线呢?我希望以下方法可以实现:
>>> y = np.array([[0,1],[1,2],[2,0]])
>>> x[y] = z
>>> x
>>> x
array([[ 0, 0.04988558, 0 ],
[ 0, 0, 0.87512891 ],
0.4288157, 0, 0 ]])
但是它会像上面一样填充整个数组。
[0,0]
,[1,1]
,[2,2]
。 - BrenBarny[z]=a
改成x[y]=z
。 - dlangenk