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>
Cela produira le résultat souhaité :
array([[1, 0], [1, 2]])
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!