Maison  >  Article  >  développement back-end  >  Comment sélectionner efficacement des colonnes spécifiques par ligne dans NumPy à l'aide de listes ou de tableaux booléens ?

Comment sélectionner efficacement des colonnes spécifiques par ligne dans NumPy à l'aide de listes ou de tableaux booléens ?

DDD
DDDoriginal
2024-11-01 10:52:30345parcourir

How to Efficiently Select Specific Columns per Row in NumPy Using Lists or Boolean Arrays?

Sélection efficace de colonnes spécifiques par ligne dans NumPy à l'aide de listes ou de tableaux booléens

NumPy offre des fonctionnalités étendues pour manipuler des tableaux multidimensionnels. Cependant, la sélection de colonnes spécifiques en fonction d'une liste d'index pour chaque ligne peut s'avérer difficile et exiger des solutions efficaces.

Une approche pour résoudre ce problème consiste à utiliser des tableaux booléens. Chaque colonne d'un tableau booléen peut représenter la sélection souhaitée pour une ligne particulière. En utilisant la sélection directe avec le tableau booléen, des colonnes spécifiques peuvent être extraites efficacement. Par exemple :

<code class="python">import numpy as np

a = np.array([1, 2, 3])
b = np.array([[False, True, False], [True, False, False], [False, False, True]])
a[b]
# Output: [2, 4, 9]</code>

Alternativement, il est possible de créer un tableau représentant la plage de colonnes et d'utiliser la sélection directe dessus. Cette approche, cependant, n'est pas toujours optimale.

<code class="python">a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
a[np.arange(len(a)), [1, 0, 2]]
# Output: [2, 4, 9]</code>

En tirant parti de ces méthodes, il est possible de sélectionner efficacement des colonnes spécifiques par ligne dans les tableaux NumPy, que les critères de sélection soient fournis ou non sous la forme d'une liste de des index ou un tableau booléen.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn