Convertir un tableau 1D à un tableau 2D dans numpy
Je veux convertir un 1-dimensions tableau dans un tableau en 2 dimensions, en spécifiant le nombre de colonnes dans le tableau 2D. Quelque chose qui pourrait fonctionner comme ceci:
> import numpy as np
> A = np.array([1,2,3,4,5,6])
> B = vec2matrix(A,ncol=2)
> B
array([[1, 2],
[3, 4],
[5, 6]])
Ne numpy ont une fonction qui fonctionne comme mon fait fonction de "vec2matrix"? (Je comprends que vous ne pouvez indice 1D tableau comme un tableau 2D, mais ce n'est pas une option dans le code, j'ai besoin de faire cette conversion.)
Vous devez vous connecter pour publier un commentaire.
Vous voulez
carré
le tableau.Vous avez deux options:
Si vous ne souhaitez plus la forme de l'original, le plus simple est juste d'attribuer une nouvelle forme de la matrice
Vous pouvez changer la
a.size//ncols
par-1
pour calculer la bonne forme automatiquement. Assurez-vous quea.shape[0]*a.shape[1]=a.size
, que vous découvrirez un problème.Vous pouvez obtenir un nouveau tableau avec les
np.reshape
fonction, qui fonctionne essentiellement comme la version présentée ci-dessusLorsque c'est possible,
new
sera juste une vue de la table initialea
, ce qui signifie que les données sont partagées. Dans certains cas, cependant,new
tableau sera acopy à la place. Notez quenp.reshape
accepte aussi un mot-clé facultatiforder
qui vous permet de changer de ligne-major C pour la colonne principale Fortran commande.np.reshape
est la fonction de la version de laa.reshape
méthode.Si vous ne pouvez pas respecter l'exigence
a.shape[0]*a.shape[1]=a.size
, vous êtes coincé avec le devoir créer un nouveau tableau. Vous pouvez utiliser lenp.resize
de la fonction et de la mélanger avecnp.reshape
, commeEssayez quelque chose comme:
Vous aurez besoin pour vous assurer que vous pouvez diviser le nombre d'éléments dans votre tableau en
ncols
bien. Vous pouvez aussi jouer avec l'ordre dans lequel les nombres sont tirés dansB
à l'aide de laorder
mot-clé.Vous pouvez utiliser
flatten()
de la numpy paquet.De sortie: