如何在NumPy数组中更改单个值?

51

我想要修改数组中的单个元素。 例如,我有:

A = np.array([1,2,3,4],
             [5,6,7,8],
             [9,10,11,12],
             [13,14,15,16])

我想用A[2][1] = 150替换A[2][1] = 10,请问该怎么做?


4
这种方法无法运作的原因是,技术上你首先返回一个新的数组 A[2],然后再访问这个数组的元素 [1]。请始终使用 @Allen 的方法来赋值。 - Brad Solomon
请参阅NumPy中有关索引的文档 - Georgy
1个回答

79

这是你需要的吗?只需索引元素并分配新值即可。

A[2,1]=150

A
Out[345]: 
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 150, 11, 12],
       [13, 14, 15, 16]])

7
为什么 NumPy 数组使用 [x,y] 而不是 [x][y] 进行访问?这是为了将它们与常规的 Python 数组区分开来吗? - clubby789
9
有点晚了,但是numpy的“数组”在内存中被表示为连续的一维向量,而Python的“数组”只是列表。Numpy的多维向量是连续的,而Python将它们视为列表的列表。它们的实现方式不同。Python的多维列表没有关于其内部列表的信息,因此您必须使用[x][y]来访问其元素。 - Bloc97
1
如果将其称为[y,x],则可以避免混淆。Numpy使用C顺序索引定义数组坐标,因此对于以标准栅格顺序存储的2D数据,y坐标首先出现。 - Hugues

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接