Maison >développement back-end >Tutoriel Python >Comment indexer un tableau NumPy 2D à l'aide de deux listes d'index, et quelles sont les solutions aux problèmes de diffusion ?
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.
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>
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>
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>
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>
Les deux approches donnent le même résultat :
[[4 7] [7 7] [2 1]]
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!