¿Por qué la forma de una matriz 1D no muestra el número de filas como 1?

Sé que la matriz numpy tiene un método llamado shape que devuelve [No. de filas, No. de columnas], y shape [0] le da el número de filas, shape [1] le da el número de columnas.

a = numpy.array([[1,2,3,4], [2,3,4,5]]) a.shape >> [2,4] a.shape[0] >> 2 a.shape[1] >> 4 

Sin embargo, si mi matriz solo tiene una fila, devuelve [Nº de columnas,]. Y la forma [1] estará fuera del índice. Por ejemplo

 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 

Ahora, ¿cómo obtengo el número de filas de una matriz numpy si la matriz puede tener solo una fila?

Gracias

El concepto de filas y columnas se aplica cuando tiene una matriz 2D. Sin embargo, la matriz numpy.array([1,2,3,4]) es una matriz 1D y, por lo tanto, tiene solo una dimensión, por lo que la shape devuelve correctamente un solo valor iterable.

Para una versión 2D de la misma matriz, considere lo siguiente:

 >>> a = numpy.array([[1,2,3,4]]) # notice the extra square braces >>> a.shape (1, 4) 

En lugar de convertir esto a una matriz 2d, que puede no ser una opción cada vez, uno podría verificar el len() de la tupla devuelta por forma o simplemente verificar un error de índice como tal:

 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") 

O simplemente puede intentar asignar esto a una variable para su uso posterior (o retorno o lo que sea) si sabe que solo tendrá formas de 1 o 2 dimensiones:

 try: shape = (a.shape[0], a.shape[1]) except IndexError: shape = (1, a.shape[0]) print(shape)