[英]Using an index array to assign values to an array in numpy
我正在嘗試向量化此操作以加快運行時間。 要設置我的問題,請看以下代碼。
current_array=np.array([[2,3],[5,6],[34,0]])
ind =np.array([[0,1],[1,1],[0,0]])
new_vals=[99,77]
##do some magic
result = [[99,77],[77,77],[99,99]]
因此,我們有了當前數組,我想使用ind
中的值將new_vals
的值分配給current_array
,以便最終得到結果。
我有辦法做到這一點,但它使用了兩個循環,我想盡可能地加快速度。 現在我正在做以下
def set_image_vals(image,means,mins):
for i in range(0,image.shape[0]):
for j in range(0,image.shape[1]):
image[i,j]=means[mins[i,j]]
return image
其中image為current_array
,意味着為new_vals
,mins為ind。
有沒有更好的方法可以加快速度?
對於一般情況,這是最靈活,最快的:
>>> new_vals = np.array([99, 77])
>>> new_vals[ind]
array([[99, 77],
[77, 77],
[99, 99]])
在這里, new_vals
可以包含兩個以上的元素,並且ind
可以索引多達該數量的元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.