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]
答案 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])
如果需要,可以将其转换回列表。