以pythonic方式使用列表索引numpy数组
假设我有一个python数组,如以pythonic方式使用列表索引numpy数组,python,arrays,numpy,Python,Arrays,Numpy,假设我有一个python数组,如 array = [[2,3,4],[5,6,7],[8,9,10]] 和一份清单 list = [0,2,1] 我基本上需要一个单行程序来从列表给出的数组中提取索引元素 例如,对于给定的数组和列表: result = [2,7,9] 我下意识的选择是 result = array[:, list] 但这并不奏效 我知道for循环应该可以做到这一点,我只是想知道是否有一些索引可以做到这一点 In [24]: a Out[24]: array([[ 2,
array = [[2,3,4],[5,6,7],[8,9,10]]
和一份清单
list = [0,2,1]
我基本上需要一个单行程序来从列表给出的数组中提取索引元素
例如,对于给定的数组和列表:
result = [2,7,9]
我下意识的选择是
result = array[:, list]
但这并不奏效
我知道for循环应该可以做到这一点,我只是想知道是否有一些索引可以做到这一点
In [24]: a
Out[24]:
array([[ 2, 3, 4],
[ 5, 6, 7],
[ 8, 9, 10]])
In [25]: lis
Out[25]: [0, 2, 1]
In [26]: a[np.arange(len(a)), lis]
Out[26]: array([2, 7, 9])
使用
enumerate
创建行索引并解压缩(zip(*…)
)此集合以获取行索引(范围[0,len(列表))
)和列索引(lis
):
是的,正是这样,我想知道为什么arange会起作用,但对所有arange进行索引并没有。@Leonpalafox查看多维数组上的索引是如何工作的:
a[zip(*enumerate(lis))]