簡體   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