Je sais que numpy array a une méthode appelée shape qui retourne [Nombre de lignes, Nombre de colonnes], et shape [0] vous donne le nombre de lignes, shape [1] vous donne le nombre de colonnes.
a = numpy.array([[1,2,3,4], [2,3,4,5]])
a.shape
>> [2,4]
a.shape[0]
>> 2
a.shape[1]
>> 4
Cependant, si mon tableau n'a qu'une ligne, il renvoie [Nombre de colonnes,]. Et la forme [1] sera hors de l'index. Par exemple
a = numpy.array([1,2,3,4])
a.shape
>> [4,]
a.shape[0]
>> 4 //this is the number of column
a.shape[1]
>> Error out of index
Maintenant, comment puis-je obtenir le nombre de lignes d'un tableau numpy si le tableau peut avoir une seule ligne?
Je vous remercie
Le concept de rangées et colonnes s'applique lorsque vous avez un tableau 2D. Cependant, le tableau numpy.array([1,2,3,4])
est un tableau 1D et n'a donc qu'une seule dimension. Par conséquent, shape
renvoie à juste titre une seule valeur itérable.
Pour une version 2D du même tableau, tenez compte de ce qui suit:
>>> a = numpy.array([[1,2,3,4]]) # notice the extra square braces
>>> a.shape
(1, 4)
Plutôt que de convertir cela en un tableau 2d, ce qui peut ne pas être une option à chaque fois - vous pouvez soit vérifier la len()
du tuple renvoyé par la forme, soit simplement rechercher une erreur d'index en tant que telle:
import numpy
a = numpy.array([1,2,3,4])
print(a.shape)
# (4,)
print(a.shape[0])
try:
print(a.shape[1])
except IndexError:
print("only 1 column")
Ou vous pouvez simplement essayer d’attribuer cette variable à une variable pour une utilisation ultérieure (ou renvoyer ce que vous avez) si vous savez que vous n’avez que 1 ou 2 formes de dimension:
try:
shape = (a.shape[0], a.shape[1])
except IndexError:
shape = (1, a.shape[0])
print(shape)