在python中通过2D数组子集2D数组

时间:2016-07-03 04:43:55

标签: python arrays numpy

我想使用2D数组来配置另一个2D数组(它们具有相同的长度),例如:

import numpy as np
tmp = np.array([[0.33, 0.67], [0.67, 0.33]])
index = np.array([[1], [0]])

我想要的是这样的:

In[91]: np.array([tmp[i][index[i]] for i in range(len(index))])

Out[91]: 
array([[ 0.67],
       [ 0.67]])

它有效,但有更聪明/更有效的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用index数组的inedx>>> tmp[(np.array(index.shape[::-1])-1)[:,None], index] array([[ 0.67], [ 0.67]]) 本身作为列来创建行的索引,然后使用简单的索引来获取目标项:< / p>

{{1}}