我有一个像这样的numpy数组:
a = [0,88,26,3,48,85,65,16,97,83,91]
如何在一步内获取某些索引位置上的值?例如:
ind_pos = [1,5,7]
结果应该是:
[88,85,16]
只需使用您的 ind_pos
进行索引。
ind_pos = [1,5,7]
print (a[ind_pos])
[88 85 16]
In [55]: a = [0,88,26,3,48,85,65,16,97,83,91]
In [56]: import numpy as np
In [57]: arr = np.array(a)
In [58]: ind_pos = [1,5,7]
In [59]: arr[ind_pos]
Out[59]: array([88, 85, 16])
a
是一个numpy数组。是的,a
需要是一个numpy数组。 - Padraic Cunningham一行代码"无导入"版本
a = [0,88,26,3,48,85,65,16,97,83,91]
ind_pos = [1,5,7]
[ a[i] for i in ind_pos ]
numpy
数组,但您可以通过使用 operator.itemgetter
来获得常规 Python 列表的相同行为。>>> from operator import itemgetter
>>> a = [0,88,26,3,48,85,65,16,97,83,91]
>>> ind_pos = [1, 5, 7]
>>> print itemgetter(*ind_pos)(a)
(88, 85, 16)
您可以使用索引数组,只需将您的ind_pos
作为索引参数传递,如下所示:
a = np.array([0,88,26,3,48,85,65,16,97,83,91])
ind_pos = np.array([1,5,7])
print(a[ind_pos])
# [88,85,16]
索引数组不一定是numpy数组,它们也可以是列表或任何类似序列的对象(但不包括元组)。
你的代码如下:
a = [0,88,26,3,48,85,65,16,97,83,91]
ind_pos = [a[1],a[5],a[7]]
print(ind_pos)
输出结果为 [88, 85, 16]