J'essaie de configurer des données à convertir en une matrice numpue. J'ai trois listes. Deux sont un dimensionnel, et on est deux dimensionnel.
[ [1,4,7,8],[2,5,9,10],[3,6,11,12] ]
5 Réponses :
En supposant que cela ne vous dérange pas si l'utilisation de NUMPY dans la conversion elle-même, les éléments suivants doivent fonctionner.
from numpy import array a = array([1, 2, 3]) b = array([4, 5, 6]) c = array([[7, 8], [9, 10], [11, 12]]) result = array(list(zip(a, b, c[:, 0], c[:, 1])))
Cela fonctionne bien pour le cas simple, mais ne s'adapte pas à des changements. Si Array C contient un grand nombre de colonnes, cela signifie qu'il faut adresser chacun individuellement: c [:, 0], c [:, 1], c [:, 2], c [:, 3], ... code>
Si vous souhaitez utiliser avec des listes Python standard, vous pouvez utiliser zip code>, puis traiter chaque ligne après: from itertools import chain
a = [1,2,3]
b = [4,5,6]
c = [[7,8], [9,10], [11,12]]
[list(chain.from_iterable(y if isinstance(y, list) else [y] for y in x)) for x in zip(a, b, c)]
un ceci fait qui peut ensuite être empilé (concaténé) verticalement avec solution numpy code> (selon votre tag) serait c code> dans un tableau 2x3: p > A code> et B code> qui ont également 3 éléments. P> < p> zip (* c) code> est un formulaire de liste de transpose p>
avec python3 code> C'est aussi simple que a = [1,2,3]
b = [4,5,6]
c = [ [7,8],[9,10],[11,12] ]
[[x, y, *z] for x, y, z in zip(a, b, c)]
[[1, 4, 7, 8], [2, 5, 9, 10], [3, 6, 11, 12]]
Mon mauvais, je n'ai pas réalisé que mon interprète Python est en réalité 3.5
Les anciennes versions de Python 3 vont s'étouffer sur le * z code>. 3.0 via 3.4 ROUGE SyntaxError: Peut utiliser l'expression étoilée uniquement comme cible d'affectation code>.
pour commencer, second, premier, ci-dessous, j'ai utilisé une compréhension de la liste pour créer la liste combinée ASFFFEZ-la à une variable, avec deux nouvelles variables locales pour rendre le fonctionnement code> Zip code> plus clair: p> xxx pré> zip code> donne 2-tuples contenant la tête n em> la tête et n em> ème queue: zip code> obtient des tuples, pas les listes, vous devez donc convertir sa sortie en listes: zip ne retournera pas ce que vous voulez quoi que ce soit, quoi que ce soit, car l'opération que vous essayez d'effectuer sur les sous-listes de C code> est concaténation em>, pas de zipping. p> lzip code> la liste 1-D comme dans l'exemple ci-dessus, puis concaténate chaque subliste qui donne lieu avec le subliste correspondant dans C code>. p> # First iteration:
([1, 4], [7, 8])
# Next iteration:
([2, 5], [9, 10])
# Last iteration:
([3, 6], [11, 12])