繁体   English   中英

Python numpy使用另一个数组将值分配给2D数组,其中有序对作为2D数组的索引

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM