Correzione rapida: controlla la proprietà .ndim: se è 2, la proprietà .shape funzionerà come previsto.
Motivo Perché: se la proprietà .ndim è 2, numpy riporta un valore di forma che è in accordo con la convenzione. Se la proprietà .ndim è 1, numpy riporta semplicemente la forma in un modo diverso.
Ulteriori informazioni: quando si passa a np.array un elenco di elenchi, la proprietà .shape accetta le nozioni standard delle dimensioni di una matrice: (righe, colonne).
Se si passa a np.array solo una lista, quindi numpy non pensa di avere una matrice sulle sue mani e segnala la forma in un modo diverso.
La domanda è: il numpy pensa di avere una matrice, o pensa di avere qualcos'altro nelle sue mani.
fonte
2017-12-03 01:59:18
Altri potrebbero chiedere il contrario, quindi penso che dovresti dire perché ti aspetti più tardi. – hakre
Si potrebbe pensare a MATLAB, ma controllare la differenza tra 'matrice' e' matrice ', in numpy, gli array sono preferibili. – seberg
@hakre Non vedo alcuna differenza (nella vita reale) tra una lista (orizzontale) e una matrice 1 xn, quindi mi aspettavo che la forma dell'array normale fosse 1 xn - e mi aspettavo anche d = [1 , 2] e non [[1, 2]], ma questo ha il suo tipo di logica una volta che vedi cosa sta succedendo. – user1710403