部分覆盖 numpy 数组不起作用

overriding partially an numpy array does not work

我试图部分覆盖 numpy 数组

有谁知道如何以这种舒适的索引方式做到这一点?

谢谢!

设置

a = np.array([[1,2,3], [1,1,1], [1,1,1]])
b = np.array([[888,888], [99, 99]])

您正在对数组的副本进行操作,因此不会持久化修改,请在此处使用numpy.ix_

>>> a[np.ix_([1,2], [0,1])] = b
>>> a
array([[  1,   2,   3],
       [888, 888,   1],
       [ 99,  99,   1]])

您还可以将这种索引与 : 分隔开始和结束索引一起使用:

>>> a = np.array([[1,2,3], [1,1,1], [1,1,1]])
# 1: and :2 all_indices_after_1 and all_indices_before_2 respectively
>>> a[1:,:2] = np.array([[888,888], [99, 99]])
>>> a
array([[  1,   2,   3],
       [888, 888,   1],
       [ 99,  99,   1]])