我正在尝试对此操作进行矢量化以加快运行时间。要设置我的问题,请查看以下代码。
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
其中图片为current_array
,意思是new_vals
,而分钟则是ind。
有没有更好的方法可以加快速度?
答案 0 :(得分:2)
对于一般情况,这是最灵活和最快的:
>>> new_vals = np.array([99, 77])
>>> new_vals[ind]
array([[99, 77],
[77, 77],
[99, 99]])
在这里,new_vals
可以有两个以上的元素,而ind
可以索引到这个数量的元素。