¿Qué hace la forma nudar ndarray?

Tengo una pregunta simple sobre la función .shape, que me confundió mucho.

a = np.array([1, 2, 3])   # Create a rank 1 array
print(type(a))            # Prints "<class 'numpy.ndarray'>"
print(a.shape)            # Prints "(3,)"

b = np.array([[1,2,3],[4,5,6]])    # Create a rank 2 array
print(b.shape)                     # Prints "(2, 3)"

¿Qué hizo exactamente .shape? cuente cuántas filas, cuántas columnas, entonces la forma a.se supone que es, (1,3), una fila tres columnas, ¿verdad?

Respuestas a la pregunta(2)

Su respuesta a la pregunta