Error: la forma te dice el rango
«Ambas matrices son
(3, 3), así que ambas tienen rango 3.»
full = np.array([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]])
flat = np.array([[1., 2., 3.], [2., 4., 6.], [3., 6., 9.]])
assert full.shape == flat.shape == (3, 3)
assert np.linalg.matrix_rank(full) == 3
assert np.linalg.matrix_rank(flat) == 1
La misma forma, el mismo orden, rangos 3 y 1. Cada fila de flat es un múltiplo de la primera. El orden es la cantidad de ejes y la forma lo delata; el rango cuenta direcciones independientes y hay que calcularlo.