web-dev-qa-db-fra.com

Python somme du tableau numpy sur certains indices

Comment effectuer une somme juste pour une liste d'index sur un tableau numpy, par exemple, si j'ai un tableau a = [1,2,3,4] et une liste d'indices à additionner, indices = [0, 2] et je veux une opération rapide pour me donner la réponse 4 parce que la valeur pour additionner la valeur à l'index 0 et à l'index 2 dans a est 4

5
Marcus_Ma

Vous pouvez utiliser sum directement après l'indexation avec indices:

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

Essayer:

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

Plus rapide

Si vous avez beaucoup de numéros et que vous souhaitez une vitesse élevée, vous devez utiliser numpy:

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

L'approche a[indices].sum() acceptée copie les données et crée un nouveau tableau. np.sum a en fait un argument pour masquer les colonnes, vous pouvez simplement le faire

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

Qui ne copie aucune donnée.

Le tableau de masques peut être obtenu par:

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