Sélectionnez efficacement des index de colonnes spécifiques par ligne dans les tableaux NumPy
Lorsque vous travaillez avec des matrices NumPy, il peut survenir des scénarios dans lesquels vous devez extraire des colonnes par ligne en fonction d'une liste d'index. L’utilisation de méthodes d’itération conventionnelles peut s’avérer inefficace pour les grands ensembles de données. Pour résoudre ce problème, explorez des solutions alternatives pour optimiser les performances.
Une approche implique une sélection directe à l'aide d'un tableau booléen. Considérons une matrice booléenne b avec la même forme que votre matrice d'origine a. Chaque colonne de b représente une condition indiquant s'il faut sélectionner cette colonne dans a. En tirant parti de l'indexation booléenne, vous pouvez récupérer les valeurs de colonne souhaitées directement à partir de a[b].
Par exemple, étant donné une matrice a et un tableau booléen b :
<code class="python">a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) b = np.array([[False, True, False], [True, False, False], [False, False, True]])</code>
Vous pouvez effectuer sélection directe :
<code class="python">result = a[b]</code>
Cette opération donnera le résultat suivant :
<code class="python">[2, 4, 9]</code>
Vous pouvez également utiliser np.arange pour créer un tableau d'index et effectuer une sélection directe sur celui-ci. En fonction de la logique de génération de votre tableau booléen, cette méthode peut offrir des avantages en termes de performances.
<code class="python">result = a[np.arange(len(a)), [1, 0, 2]]</code>
Cette approche produit le même résultat que la solution de tableau booléen.
En tirant parti de ces techniques de sélection optimisées , vous pouvez améliorer considérablement l'efficacité de l'extraction d'index de colonnes spécifiques par ligne à partir de grands tableaux NumPy.
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!