concatenar / combinar la matriz numpy MX1 con la matriz numpy MXN

required_time_stamps contiene 5911 sellos de tiempo
time_based_mfcc_feature contiene 5911 muestras, cada una con 20 funciones mfcc.

Así que si tuvieras que mirar time_based_mfcc_feature
se verá como

 row1 val2 val3 ... val 20 row2 val2 val3 ... val 20 row3 val2 val3 ... val 20 . . . row5911 val2 val3 ... val 20 print type(required_time_stamps) 
 print required_time_stamps.shape 

(5911,)

 print type(time_based_mfcc_feature) 
 print time_based_mfcc_feature.shape 

(5911, 20)

Quiero combinar estos dos para que tenga:

En R, simplemente puedo hacer

 time_based_mfcc_feature<-as.data.frame(time_based_mfcc_feature) required_time_stamps<-as.data.frame(required_time_stamps) new_dataframe <- merge(required_time_stamps,time_based_mfcc_feature) View(new_dataframe) 

¿Cómo lograría esto en python?

Para que los datos finales se vean así:

 time1 row1 val2 val3 ... val 20 time2 row2 val2 val3 ... val 20 time3 row3 val2 val3 ... val 20 . . . time5911 row5911 val2 val3 ... val 20 

Donde estos time1 a time 5911 son simplemente los valores contenidos en required_time_stamps.
Lo intenté :

 mfcc_features_with_times= np.hstack((required_time_stamps,time_based_mfcc_feature)) 

PERO TENGO ESTE ERROR

 --------------------------------------------------------------------------- ValueError Traceback (most recent call last)  in () ----> 1 mfcc_features_with_times= np.hstack((required_time_stamps,time_based_mfcc_feature)) /usr/local/lib/python2.7/dist-packages/numpy/core/shape_base.pyc in hstack(tup) 289 # As a special case, dimension 0 of 1-dimensional arrays is "horizontal" 290 if arrs and arrs[0].ndim == 1: --> 291 return _nx.concatenate(arrs, 0) 292 else: 293 return _nx.concatenate(arrs, 1) ValueError: all the input arrays must have same number of dimensions 

ENTONCES TRILE EL TRANSPUESTO

 t = required_time_stamps.transpose mfcc_features_with_times= np.hstack((t,time_based_mfcc_feature)) 

Pero otra vez el mismo error:

 --------------------------------------------------------------------------- ValueError Traceback (most recent call last)  in () ----> 1 mfcc_features_with_times= np.hstack((t,time_based_mfcc_feature)) /usr/local/lib/python2.7/dist-packages/numpy/core/shape_base.pyc in hstack(tup) 289 # As a special case, dimension 0 of 1-dimensional arrays is "horizontal" 290 if arrs and arrs[0].ndim == 1: --> 291 return _nx.concatenate(arrs, 0) 292 else: 293 return _nx.concatenate(arrs, 1) ValueError: all the input arrays must have same number of dimensions 

También miré: Arreglos 2D concatenados con la matriz 1D, pero creo que es otra cosa.

El objective es alimentar estos datos a una neural network keras, fila por fila.
También tengo 5911 tags correspondientes a las 5911 marcas de tiempo, que concatenaré más adelante.

ACTUALIZACIÓN: Basado en los enlaces en los comentarios que probé,

 >>> a = np.array([[1,2,3], [2,3,4]]) >>> a array([[1, 2, 3], [2, 3, 4]]) >>> b = np.array([[1,2,3,0], [2,3,4,0]]) >>> b array([[1, 2, 3, 0], [2, 3, 4, 0]]) >>> c= np.hstack((a,b)) >>> c array([[1, 2, 3, 1, 2, 3, 0], [2, 3, 4, 2, 3, 4, 0]]) 

Para este ejemplo, el astackmiento funciona, pero no hay idea de por qué la misma lógica no funciona para mí.

ACTUALIZACIÓN: Pude resolverlo siguiendo la sugerencia de cmaher:

 mfcc_features_with_times= np.hstack((required_time_stamps[:,None],time_based_mfcc_feature)) 

sin embargo, esto es cierto solo si ambos tienen la misma dimensión. En la mayoría de los casos estoy terminando con la matriz A que tiene forma (8400) y la matriz B que tiene forma (8399, 21).

¿Cómo trunca / borro las últimas filas de A para que tanto A como B tengan las mismas formas como (8399,) y (8399, 21)? Por favor avise.

ERROR DE ACTUALIZACIÓN DURANTE LA LISTA: Actualmente cuando hago A = A[:B.shape[0],:] donde A = new_labels_np_array B = time_based_mfcc_feature

 ` 64 if len(new_labels_np_array) > len(time_based_mfcc_feature): ---> 65 new_labels_np_array = new_labels_np_array[:time_based_mfcc_feature.shape[0],:] 66 elif len(time_based_mfcc_feature)>len(new_labels_np_array): 67 time_based_mfcc_feature = time_based_mfcc_feature[:,new_labels_np_array.shape[0],:] IndexError: too many indices for array` 

Como ya encontraste una respuesta para la primera parte de tu pregunta en el hilo numpy-concatenate-2d-arrays-with-1d-array , abordaré la segunda pregunta:

¿Cómo trunca / borro las últimas filas de A para que tanto A como B tengan las mismas formas como (8399,) y (8399, 21)? Por favor avise.

Puede dividir una matriz numpy como si dividiera una lista . Entonces, para recortar una matriz B 2D al tamaño de A largo del eje 0.

 B = B[:A.shape[0],:] 

Esto recorta el final de la matriz. Si desea recortar al principio, es decir, deseche las primeras filas que no encajan en forma en lugar de la última:

 B = B[-A.shape[0]:,:] 

EDIT: Su comentario implica que no sabe de antemano cuál de los arreglos es más largo. En ese caso:

 trim = min(A.shape[0], B.shape[0]) A = A[:trim] B = B[:trim,:] 

o respectivamente

 trim = min(A.shape[0], B.shape[0]) A = A[-trim:] B = B[-trim:,:]