web-dev-qa-db-ja.com

Python:特定のインデックス位置で配列の値を取得する方法は?

私はこのようなnumpy配列を持っています:

a = [0,88,26,3,48,85,65,16,97,83,91]

ワンステップで特定のインデックス位置の値を取得するにはどうすればよいですか?例えば:

ind_pos = [1,5,7]

結果は次のようになります。

[88,85,16]
15
MoTSCHIGGE

ただあなたを使ってインデックスを作成する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])
17

ワンライナー「輸入なし」バージョン

a = [0,88,26,3,48,85,65,16,97,83,91]
ind_pos = [1,5,7]
[ a[i] for i in ind_pos ]
9
Ohad Cohen

numpy配列について尋ねますが、通常のPythonリストに対して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)
4
chepner

インデックス配列 を使用して、単に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配列である必要はありません。リストまたはシーケンスのようなオブジェクト(タプルではありません)にすることもできます。

2
Ffisegydd