使用索引数组在numpy中为数组赋值

时间:2016-03-30 13:15:28

标签: python 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

其中图片为current_array,意思是new_vals,而分钟则是ind。

有没有更好的方法可以加快速度?

1 个答案:

答案 0 :(得分:2)

对于一般情况,这是最灵活和最快的:

>>> new_vals = np.array([99, 77])
>>> new_vals[ind]
array([[99, 77],
   [77, 77],
   [99, 99]])

在这里,new_vals可以有两个以上的元素,而ind可以索引到这个数量的元素。