为数组的条件选定元素分配新值

Assign new value to a condition selected element of an array

我在为数组的选定元素赋值时遇到问题,我不明白为什么会这样。

我在 pyhton 中编程,虽然代码复杂得多,但我遇到的问题可以用这个小代码重现:

Yr = np.arange(0, 10)
Xg = np.arange(0, 10)

现在我想按如下方式更改我选择的元素的值:

Yr[Xg>5][2] = 10

...它什么都不做:

In [275]: Yr
Out[275]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

谢谢。

我试过改变赋值的类型,但也没用。

正如其他人在他们的回答中提到的那样,Yr[Xg>5] 是一个新数组,对它的任何更改都不适用于原始数组,但您可以像这样使用 np.put 来做到这一点:

np.put(Yr, np.where(Xg>5)[0][2], 10)

或者简单地这样做:

Yr[np.where(Xg>15)[0][2]] = 10

因为它创建了数组的副本 所以你修改的是副本而不是数组本身

Yr[Xg>5]

是一个新数组

    Yr = Yr[Xg>5]
    Yr[2] = 10
    print(Yr) # will print [ 6  7 10  9]