Maison  >  Article  >  développement back-end  >  Comment puis-je sélectionner efficacement des colonnes par index à l'aide de listes dans NumPy ?

Comment puis-je sélectionner efficacement des colonnes par index à l'aide de listes dans NumPy ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-27 02:11:30815parcourir

How Can I Efficiently Select Columns by Index Using Lists in NumPy?

NumPy : sélection efficace de colonnes par index à l'aide de listes

De nombreuses tâches de manipulation de données impliquent la sélection de colonnes spécifiques à partir d'une matrice NumPy. Lorsque les colonnes à sélectionner varient selon la ligne, une approche simple consiste à parcourir le tableau, ce qui peut être coûteux en termes de calcul pour les grands ensembles de données.

Cependant, NumPy propose une solution plus optimisée utilisant des tableaux booléens ou entiers. Au lieu d'une liste d'index de colonnes, vous pouvez créer une matrice de la même forme que la matrice d'origine, où chaque colonne contient des valeurs indiquant si cette colonne doit être sélectionnée.

Par exemple, considérons la matrice suivante :

[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]

Et la matrice d'index suivante :

[[False, True, False],
[True, False, False],
[False, False, True]]

En utilisant la sélection directe de NumPy, vous pouvez facilement extraire les valeurs souhaitées :

<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]])
selected_values = a[b]</code>

Cela produit le résultat souhaité :

[2, 4, 9]

Vous pouvez également utiliser la fonction arange() et la sélection directe pour encore plus d'efficacité :

<code class="python">selected_values = a[np.arange(len(a)), [1, 0, 2]]</code>

En tirant parti des méthodes de sélection NumPy optimisées, vous pouvez améliorer considérablement la performance de vos tâches de manipulation de données lors de la sélection de colonnes en faisant varier les index par ligne.

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