Maison >développement back-end >Tutoriel Python >Comment `np.ix_` peut-il simplifier la sélection et l'affectation d'index dans les tableaux NumPy multidimensionnels ?

Comment `np.ix_` peut-il simplifier la sélection et l'affectation d'index dans les tableaux NumPy multidimensionnels ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-26 19:38:021115parcourir

How can `np.ix_` simplify index selection and assignment in multidimensional NumPy arrays?

Tableaux d'indexation et masques booléens pour la sélection ou l'affectation d'index à l'aide de np.ix_

La manipulation des sélections ou des affectations dans des tableaux NumPy multidimensionnels peut être simplifiée à l'aide de np.ix_. Voici comment cela fonctionne :

1. Utilisation de tableaux d'indexation

A. Selection

np.ix_ vous permet de regrouper des tableaux d'indexation en combinaisons de dimensions supérieures pour indexer des tableaux multidimensionnels. Pour effectuer une sélection à l'aide de deux tableaux d'indexation 1D (par exemple, row_indices et col_indices), utilisez :

<code class="python">x_indexed = x[np.ix_(row_indices, col_indices)]</code>

Cela équivaut à une version imbriquée où le tableau d'indexation externe (par exemple, row_indices) est diffusé sur le tableau d'indexation interne. tableau d'indexation (col_indices) :

<code class="python">x_indexed = x[np.asarray(row_indices)[:,None], col_indices]</code>

B. Assignation

De même, en utilisant le tuple de tableaux d'indexation créé par np.ix_, les affectations scalaires ou la diffusion d'un bloc de données peuvent être effectuées directement :

<code class="python">x[np.ix_(row_indices, col_indices)] = scalar # assign a scalar
x[np.ix_(row_indices, col_indices)] = block  # assign a broadcastable block</code>

2. Utiliser des masques booléens

np.ix_ fonctionne également avec des masques booléens :

A. Sélection

Pour sélectionner un bloc de données à l'aide de masques booléens (row_mask et col_mask), utilisez :

<code class="python">x[np.ix_(row_mask, col_mask)]</code>

B. Devoir

Pour les devoirs avec des masques booléens, utilisez :

<code class="python">x[np.ix_(row_mask, col_mask)] = scalar # assign a scalar
x[np.ix_(row_mask, col_mask)] = block  # assign a broadcastable block</code>

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