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