如何将numpy的整数数组索引应用于ndarray-s和python列表?

时间:2017-11-20 13:22:15

标签: python arrays python-3.x numpy

Numpy有"integer array indexig",可以将ndarray与其他ndarray或列表编入索引:

>> A = np.arange(10,20)
>> A[[1,2,3]]
Out[14]: array([11, 12, 13])

假设我不知道A是什么,可以是ndarray或Python的列表。

numpy中是否有明确的索引函数,它允许相同的索引并接受这两种类型?

例如:

>> A = np.arange(10,20)
>> np.get_elements(A, [1,2,3])
Out[14]: array([11, 12, 13])
>> A = range(10,20)
>> np.get_elements(A, [1,2,3])
Out[15]: [11, 12, 13]

1 个答案:

答案 0 :(得分:1)

def get_elements(A, idx):
    try:
        return A[idx]
    except TypeError:
        import operator
        return list(operator.itemgetter(*idx)(A))

In [35]: get_elements(np.arange(10), [1,3,4])
Out[35]: array([1, 3, 4])
In [36]: get_elements(np.arange(10).tolist(), [1,3,4])
Out[36]: [1, 3, 4]

itemgetter只是一个便利课程。列表理解也同样好

In [39]: [A[i] for i in [1,3,4]]
Out[39]: [1, 3, 4]

take这样的numpy函数返回一个数组

In [40]: np.take(A,[1,3,4])
Out[40]: array([1, 3, 4])

如果需要,可以将其转换回列表。