Python 使用索引数组为numpy中的数组赋值

Python 使用索引数组为numpy中的数组赋值,python,numpy,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\u vals的值分配给current\u数组,从而得到结果 我有办法做到这一点,

我正在尝试将此操作矢量化以加快运行时间。要设置问题,请查看以下代码

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\u vals
的值分配给
current\u数组
,从而得到结果

我有办法做到这一点,但它使用两个循环,我想加快它尽可能多。现在我正在做以下工作

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
其中图像将是当前数组,表示将是新的VAL,分钟将是ind


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

对于一般情况,这是最灵活、最快的方法:

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

在这里,
new\u vals
可以有两个以上的元素,并且
ind
可以索引到该数量的元素。

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

>>> new_vals = np.array([99, 77])
>>> new_vals[ind]
array([[99, 77],
   [77, 77],
   [99, 99]])
在这里,
new\u vals
可以有两个以上的元素,而
ind
可以索引到该数量的元素