Comment indexer un tableau NumPy 2D à l'aide de deux listes d'index, et quelles sont les solutions aux problèmes de diffusion ?

Patricia Arquette
Libérer: 2024-10-26 15:06:02
original
761 Les gens l'ont consulté

How can I index a 2D NumPy array using two lists of indices, and what are the solutions to broadcasting issues?

Indexation d'un tableau Numpy 2D avec 2 listes d'indices

Dans NumPy, il existe différentes manières d'indexer un tableau 2D en utilisant deux des listes d'index, une pour les lignes et une pour les colonnes. Explorons ces méthodes et abordons le problème de la diffusion.

Utilisation de la diffusion avec des tableaux d'indexation

Pour indexer un tableau 2D, x, à l'aide de deux tableaux d'indexation, row_indices et col_indices, vous pouvez simplement utiliser le syntaxe suivante :

<code class="python">x_indexed = x[row_indices, col_indices]</code>
Copier après la connexion

Cependant, cela peut rencontrer une erreur de diffusion si les formes de row_indices et col_indices ne sont pas compatibles pour la diffusion. Pour surmonter cela, vous pouvez utiliser np.ix pour gérer la diffusion.

<code class="python">x_indexed = x[np.ix_(row_indices, col_indices)]</code>
Copier après la connexion

Utilisation de masques booléens

Vous pouvez également utiliser des masques booléens pour la sélection de lignes et de colonnes. Créez deux masques booléens, row_mask et col_mask, où True représente les éléments à sélectionner.

Ensuite, vous pouvez utiliser la syntaxe suivante :

<code class="python">x_indexed = x[row_mask, col_mask]</code>
Copier après la connexion

Exemple :

Donné x, row_indices et col_indices :

<code class="python">x = np.random.randint(0, 10, size=(5, 8))
row_indices = [2, 1, 4]
col_indices = [3, 7]

# Using broadcasting with indexing arrays
x_indexed_broadcasting = x[np.ix_(row_indices, col_indices)]

# Using boolean masks
row_mask = np.array([False] * 5, dtype=bool)
row_mask[[2, 1, 4]] = True
col_mask = np.array([False] * 8, dtype=bool)
col_mask[[3, 7]] = True
x_indexed_masks = x[row_mask, col_mask]

print(x_indexed_broadcasting)
print(x_indexed_masks)</code>
Copier après la connexion

Sortie :

Les deux approches donnent le même résultat :

[[4 7]
 [7 7]
 [2 1]]
Copier après la connexion

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!