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
Vous pouvez utiliser sum
directement après l'indexation avec indices
:
a = np.array([1,2,3,4])
indices = [0, 2]
a[indices].sum()
Essayer:
>>> a = [1,2,3,4]
>>> indices = [0, 2]
>>> sum(a[i] for i in indices)
4
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
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