这很难用语言来描述,但在实践中很容易看到。我有一个2D数组:
im = np.array([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]])
我将其解释为4x4灰度图像-因此数组中的值只是强度。因此,首先,im
是:
[[0,0,0,0],
[0,0,0,0],
[0,0,0,0],
[0,0,0,0]]
我希望能够根据x值数组和y值数组一次更改“图像”中的许多值。我将它们组装成看起来像第二个数组中的有序对:
x = [0,1]
y = [2,3]
coords = np.array([x,y]).T
现在coords
看起来像这样:
array([[0, 2],
[1, 3]])
最后,我想按坐标索引im。我想也许是这样的:
im[coords] = 9
...但这不起作用。我希望im的最终结果是:
[[0,0,9,0],
[0,0,0,9],
[0,0,0,0],
[0,0,0,0]]
有人知道快速,优雅的方法吗?
谢谢!
答案 0 :(得分:0)
通常,如果您有一个numpy数组
import numpy as np
arr = np.array([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]])
x_coords = [0, 1]
y_coords = [2, 3]
values = [8, 9]
然后
arr[x, y] = values
将导致
array([
[0, 0, 8, 0],
[0, 0, 0, 9],
[0, 0, 0, 0],
[0, 0, 0, 0]
])
答案 1 :(得分:0)
您只需执行im[x,y] = 9
。
例如:
im = np.array([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]])
x = [0,1]
y = [2,3]
im[x,y] = 9
print(im)
# Result:
# array([[0, 0, 9, 0],
# [0, 0, 0, 9],
# [0, 0, 0, 0],
# [0, 0, 0, 0]])