Maison  >  Article  >  développement back-end  >  Comment indexer un tableau NumPy 2D avec deux listes d'index à l'aide de « np.ix_ » ?

Comment indexer un tableau NumPy 2D avec deux listes d'index à l'aide de « np.ix_ » ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-26 08:27:30921parcourir

How to Index a 2D NumPy Array with Two Lists of Indices Using `np.ix_`?

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

Énoncé du problème

Indexation d'un tableau Numpy 2D avec deux listes d’indices distinctes n’est pas aussi simple que d’utiliser une seule liste d’indices. Cela peut être difficile lorsqu'il s'agit de grands tableaux, car cela nécessite la diffusion et le remodelage des tableaux pour obtenir la sélection indexée souhaitée.

Solution utilisant np.ix_ et la diffusion

La fonction np.ix_ de Numpy peut être utilisée pour créer un tuple de tableaux d'indexation qui peuvent être diffusés les uns contre les autres pour obtenir le modèle d'indexation souhaité. Cette approche maintient la lisibilité et favorise l'optimisation du code.

Pour effectuer l'indexation à l'aide de np.ix_, suivez ces étapes :

  1. Créez deux tableaux de diffusion à l'aide de np.ix_ avec les indices de ligne et de colonne. .
  2. Utilisez ces tableaux d'indexation pour sélectionner les lignes et les colonnes souhaitées dans le tableau d'origine.

Exemple de code

Ce qui suit Le code montre comment utiliser np.ix_ pour les sélections basées sur un index :

<code class="python">import numpy as np

# Create indices
row_indices = [4, 2, 18, 16, 7, 19, 4]
col_indices = [1, 2]

# Create broadcasting arrays
index_tuples = np.ix_(row_indices, col_indices)

# Perform indexing
x_indexed = x[index_tuples]</code>

Exemple de sortie

>>> x_indexed
array([[76, 56],
       [70, 47],
       [46, 95],
       [76, 56],
       [92, 46]])

Considérations supplémentaires

Syntaxe alternative :
Une syntaxe alternative pour utiliser np.ix_ consiste à utiliser l'opérateur : pour spécifier tous les indices le long d'un axe, sauf indication contraire.

Diffusion :
Il est important de noter que la diffusion s'effectue le long des axes du tableau d'entrée. Par conséquent, la taille des tableaux d'indexation le long de chaque axe doit correspondre aux dimensions correspondantes du tableau d'entrée.

Optimisation :
L'indexation à l'aide de np.ix_ et la diffusion peuvent offrir des avantages significatifs en termes de performances. par rapport à l'itération sur des indices ou à l'utilisation de masques booléens. Ceci est particulièrement avantageux lorsque vous travaillez avec de grands tableaux.

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