就地更改 Numpy 数组值

Jac*_*Shi 1 python numpy numpy-ndarray

假设我们有一个随机生成的 2D 3x2 Numpy 数组a = np.array(3,2),并且我想将第一行和第一列上的元素值(即 a[0,0])更改为 10。如果我这样做

a[0][0] = 10

然后它起作用了,a[0,0] 更改为 10。但是如果我这样做

a[np.arange(1)][0] = 10

那么什么都没有改变。为什么是这样?

我想将选定的行列表(由 Numpy 数组指示)的某些列值更改为其他一些值(例如a[row_indices][:,0] = 10),但它不起作用,因为我传递了指示行的数组(或列表) 。

jua*_*aga 5

a[x][y]错的。它恰好在第一种情况下工作,a[0][0] = 10因为a[0]返回一个view,因此resul[y] = whatever修改了原始数组。但是,在第二种情况下,a[np.arange(1)][0] = 10,a[np.arange(1)]返回一个副本(因为您正在使用数组索引)。

你应该使用a[0, 0] = 10a[np.arange(1), 0] = 10