MoT*_*GGE 15 python arrays indexing numpy
我有一个像这样的numpy数组:
a = [0,88,26,3,48,85,65,16,97,83,91]
Run Code Online (Sandbox Code Playgroud)
如何在一步中获得某些指数位置的值?例如:
ind_pos = [1,5,7]
Run Code Online (Sandbox Code Playgroud)
结果应该是:
[88,85,16]
Run Code Online (Sandbox Code Playgroud)
Pad*_*ham 18
只是用你索引 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])
Run Code Online (Sandbox Code Playgroud)
Oha*_*hen 10
一个班轮"没有进口"版本
a = [0,88,26,3,48,85,65,16,97,83,91]
ind_pos = [1,5,7]
[ a[i] for i in ind_pos ]
Run Code Online (Sandbox Code Playgroud)
尽管您询问numpy数组,但您可以通过使用operator.itemgetter.
>>> 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)
Run Code Online (Sandbox Code Playgroud)
您可以使用索引数组,只需将其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]
Run Code Online (Sandbox Code Playgroud)
索引数组不一定是 numpy 数组,它们也可以是列表或任何类似序列的对象(尽管不是元组)。