¿Existe una diferencia importante entre los vectores con forma (D,) y (D, 1) o (1, D) en numpy?

La diferencia es de dónde vienen y qué representan.

a = lista (rango (D)) # [0,1,2,3,… D-1]
b = [lista (rango (D))] # [[0,1,2,3… D-1]]
c = [[j] para j en el rango (D))] # [[0], [1], [2], [3],… [D-1]]

importar numpy como np
a = matriz np. (a)
b = matriz np. (b)
c = np.array (c)

a. forma # (DL,)
B. forma # (1L, DL)
C. forma # (5L, 1L)

a.ndim # 1
b.ndim # 2
c. end # 3

para x en a:
imprimir x
# 0
# 1
# …
#RE

para x en b:
imprimir x
# [0 1 2… D]

para x en c:
imprimir x

# [0]
# [1]
# …
#[RE]

La opción (D,) representa un vector, los otros representan matrices.
Por lo que sé, numpy usará vectores en notación de columna o fila dependiendo de la operación. Otra diferencia es cuando se itera sobre los elementos o se asigna una función a las matrices porque los elementos del vector son números, mientras que los elementos de las matrices son vectores.

parece que (D,) encuentra automáticamente a qué dimensión transmitir, mientras que (1, D) o (D, 1) se bloquea a menos que la transmisión se alinee correctamente a propósito.

Aunque un verdadero experto numpy debería responder más de mis 2 minutos de tiempo de juego en la línea de comando.