快速命令访问带有所需索引的列表中的多维数组元素

时间:2018-09-17 06:16:11

标签: python numpy

我想知道是否有人知道从给定索引列表中获取2D数组元素的快速方法吗?

以下代码可以实现我想要的功能,但是我想知道是否有一些更快的方法可以在下面的代码循环中进行操作?我正在寻找的是像array [wantedIndices]这样的命令,而不是下面的代码中的循环。

import numpy as np
np.random.seed(1)
x = np.arange(0, 1+.1, .25)
y = np.arange(0, 1+.1, .25)
x, y = np.meshgrid(x,y)
print('\n x \n', x,)

index = [(np.random.randint(0, high=len(x)), np.random.randint(0, high=len(x))) for i in range(len(x))]
print('\n index \n', index)

for indexNumber in range(len(index)):
    print('\n index[%d]:' %indexNumber, index[indexNumber], '\n x[index[%d]] \n' %indexNumber, x[index[indexNumber]])

上面的代码产生以下输出:

x 
 [[0.   0.25 0.5  0.75 1.  ]
 [0.   0.25 0.5  0.75 1.  ]
 [0.   0.25 0.5  0.75 1.  ]
 [0.   0.25 0.5  0.75 1.  ]
 [0.   0.25 0.5  0.75 1.  ]]

 index 
 [(3, 4), (0, 1), (3, 0), (0, 1), (4, 4)]

 index[0]: (3, 4) 
 x[index[0]] 
 1.0

 index[1]: (0, 1) 
 x[index[1]] 
 0.25

 index[2]: (3, 0) 
 x[index[2]] 
 0.0

 index[3]: (0, 1) 
 x[index[3]] 
 0.25

 index[4]: (4, 4) 
 x[index[4]] 
 1.0

0 个答案:

没有答案