Agregue un numpy.array a un determinado numpy.array almacenado en una lista

He estado luchando durante horas para entender por qué no puedo hacer esto:

>>> import numpy as np >>> a = [np.empty((0,78,3)) for i in range(2)] >>> b = np.random.randint(10,size=(1,78,3)) >>> a[0] = np.append(a[0],[b],axis=0) Traceback (most recent call last): File "", line 1, in  File "/usr/local/lib/python2.7/site-packages/numpy/lib/function_base.py", line 5003, in append return concatenate((arr, values), axis=axis) ValueError: all the input arrays must have same number of dimensions >>> 

a es una lista con s arrays numpy vacíos de forma (0,78,3)

b es una matriz numpy aleatoria con forma (1,78,3)

Luego trato de adjuntar b a a[0] … ¿pero esto no parece ser posible debido a que no tengo la misma dimensión? … No estoy seguro de cuál es el problema aquí … trabajo, entonces ¿por qué no con la lista? ..

Manténgase alejado de np.append . Aprende a usar np.concatenate correctamente. Este apéndice simplemente crea confusión.

Dadas tus definiciones, esto funciona:

 In [20]: a1 = [np.concatenate((i,b),axis=0) for i in a] In [21]: [i.shape for i in a1] Out[21]: [(1, 78, 3), (1, 78, 3)] In [22]: a Out[22]: [array([], shape=(0, 78, 3), dtype=float64), array([], shape=(0, 78, 3), dtype=float64)] In [23]: b.shape Out[23]: (1, 78, 3) In [24]: a1 = [np.concatenate((i,b),axis=0) for i in a] In [25]: [i.shape for i in a1] Out[25]: [(1, 78, 3), (1, 78, 3)] 

Una (0,78,3) puede concatenar en el eje 0 con una matriz (1,78,3), produciendo otra matriz (1,78,3).

Pero ¿por qué hacerlo? Simplemente hace una lista con 2 copias de b .

 c = [b,b] 

lo hace igual de bien, y es más sencillo.

Si tiene que recoger muchas matrices de forma (78,3), haga

 alist = [] for _ in range(n): alist.append(np.ones((78,3))) 

La lista resultante de n matrices se puede convertir en una matriz con

 np.array(alist) # (n, 78, 3) array 

O si recostack una lista de arrays (1,78,3), np.concatenate(alist, axis=0) los unirá en la matriz (n, 78,3).

No estás agregando b pero [b] . Eso no funciona.

Así que para añadir b , use

 a[0] = np.append(a[0],b,axis=0)