web-dev-qa-db-ja.com

Python特定のインデックスのnumpy配列合計

Numpy配列のインデックスのリストだけで合計を実行する方法。たとえば、配列a = [1,2,3,4]と合計するインデックスのリストindices = [0, 2]があり、高速な操作でaのインデックス0とインデックス2の合計値の値は4であるため、4と答えます。

5
Marcus_Ma

sumを使用してインデックスを作成した直後にindicesを使用できます。

a = np.array([1,2,3,4])
indices = [0, 2] 
a[indices].sum()
11
andrew_reece

試してください:

>>> a = [1,2,3,4]
>>> indices = [0, 2]
>>> sum(a[i] for i in indices)
4

もっと早く

数値が多く、高速にしたい場合は、numpyを使用する必要があります。

>>> import numpy as np
>>> a = np.array([1,2,3,4])
>>> a[indices]
array([1, 3])
>>> np.sum(a[indices])
4
1
John1024

受け入れられたa[indices].sum()アプローチは、データをコピーして新しい配列を作成します。 np.sumには、実際には列をマスクする引数があります。

np.sum(a, where=[True, False, True, False])

どのデータもコピーされません。

マスク配列は、次の方法で取得できます。

mask = np.full(4, False)
mask[np.array([0,2])] = True
0
Tong Zhou