[英]Python numpy assigning values to a 2D array using another array with ordered pairs as indices to the 2D array
这很难用文字描述,但在实践中很容易看到。 我有一个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]])
最后,我想通过coords索引im。 我想也许是这样的:
im[coords] = 9
......但这不起作用。 我希望im的最终结果是:
[[0,0,9,0],
[0,0,0,9],
[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]
])
你可以简单地做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]])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.