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

DDD
Libérer: 2024-11-01 10:52:30
original
410 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal