Python 访问大型2D numpy数组中的多个索引

Python 访问大型2D numpy数组中的多个索引,python,arrays,numpy,Python,Arrays,Numpy,假设我有: (i) 阵列1-大小为50000 x 20000的二维numpy阵列 (ii)数组2-另一个大小类似的零数组,即50000 x 20000 (iii)如-[[i1,j1]、[i1,j2]、[i3,j3]、[in,jn]的索引列表1 (iv)指数清单2-[[m1,n1]、[m1,n2]、[m3,n3]、[m,n]] 对列表1、列表2中的每个索引执行以下操作的有效方法是什么: Array2[m1,n1]= array1[i1,j1]

假设我有:

(i) 阵列1-大小为50000 x 20000的二维numpy阵列

(ii)数组2-另一个大小类似的零数组,即50000 x 20000

(iii)如-[[i1,j1]、[i1,j2]、[i3,j3]、[in,jn]的索引列表1

(iv)指数清单2-[[m1,n1]、[m1,n2]、[m3,n3]、[m,n]]

对列表1、列表2中的每个索引执行以下操作的有效方法是什么:

                       Array2[m1,n1]= array1[i1,j1]
                       Array2[m2,n2]= array1[i2,j2]
                       Array2[m3,n3]= array1[i3,j3]
                                    .
                                    .
                       Array2[mn,nn]= array1[in,jn]

假设您确保数组大小以及两个索引列表相同,您可以简单地执行以下操作:

for N, index_couple in enumerate(list_of_indices_1):
    i = index_couple[0]
    j = index_couple[1]
    m = list_of_indices_2[N][0]
    n = list_of_indices_2[N][1]
    array2[m,n] = array1[i,j]
或者更明确地说:

for N,_ in enumerate(list_of_indices_1):
    i = list_of_indices_1[N][0]
    j = list_of_indices_1[N][1]
    m = list_of_indices_2[N][0]
    n = list_of_indices_2[N][1]
    array2[m,n] = array1[i,j]

[M1,n1]与[I1,J1]有不同的值。所以只要在对角线中分配值吗?<代码> AARY2[A2[,,0 ],A2[,,1 ] ] = Aray1[A1[,,0 ],A1[,,1 ] ] /<代码> A1,A2分别是List1和List2的数组版本。目前这是基于意见的。@Divakar成功了,谢谢!这和我正在做的很接近。最好有一个更快的解决方案,因为len(list1)=len(list2)=10^6