Comment convertir des listes Python de longueur variable en un tableau NumPy dense avec des espaces réservés ?

Barbara Streisand
Libérer: 2024-11-03 22:03:03
original
528 Les gens l'ont consulté

How to Convert Variable-Length Python Lists to a Dense NumPy Array with Placeholders?

Convertir efficacement les listes Python de longueur variable en un tableau NumPy dense

La conversion directe des listes Python de longueur variable en résultats de tableau NumPy dans un tableau de type « objet », ce qui peut être indésirable. Alternativement, tenter de forcer un type spécifique à l'aide de np.array(v, dtype=np.int32) entraîne une exception en raison de la présence de séquences dans le tableau.

Par conséquent, pour créer un tableau NumPy dense de un type de données spécifique (par exemple, int32) tout en remplissant les valeurs manquantes avec un espace réservé, vous pouvez exploiter la fonction itertools.zip_longest.

Par exemple, en considérant la séquence d'entrée v = [[1], [1, 2 ]], en utilisant itertools.zip_longest avec un espace réservé de 0, vous pouvez obtenir efficacement un tableau NumPy dense comme suit :

<code class="python">import itertools
np.array(list(itertools.zip_longest(*v, fillvalue=0))).T</code>
Copier après la connexion

Cela produira le résultat souhaité :

array([[1, 0],
       [1, 2]])
Copier après la connexion

Remarque que pour Python 2, utilisez plutôt itertools.izip_longest.

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