使用pythonic方式的列表索引numpy数组

时间:2014-02-24 08:35:44

标签: 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循环应该这样做,我只是想知道是否有一些索引可以做到这一点

2 个答案:

答案 0 :(得分:2)

这样的东西?

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])

答案 1 :(得分:0)

使用enumerate创建行索引并解压缩(zip(*...))此集合以获取行索引(范围[0, len(list)))和列索引(lis):

a[zip(*enumerate(lis))]