¿Cómo puedo combinar 2 columnas en Python

Supongamos que he definido una matriz 2×2 usando numpy:

array([[1, 2], [2, 3]]) 

Ahora la otra matriz 2×1:

 array([[3], [4]]) 

¿Cómo puedo concatenar estos 2 matrices por columna, para que se convierta en:

 array([[1, 2, 3], [2, 3, 4]]) 

¿Y cómo también puedo eliminar la columna de especificación, para que se convierta en

 array([[1], [2]]) 

Hay un método numpy.concatenate

 import numpy as np np.concatenate( [ np.array( [ [1,2], [2,3] ] ), np.array( [ [3],[4] ] ) ] , axis = 1) 

o simplemente usa hstack o vstack

 np.hstack( [ np.array( [ [1,2], [2,3] ] ), np.array( [ [3],[4] ] ) ] ) 

También se pueden usar para eliminar la columna (concatenar dos subarreglos), esto se puede usar para eliminar muchas columnas.

Para eliminar la i’th column puede tomar subarreglos a esta columna, y de la siguiente, y concatenarlos. Por ejemplo, para eliminar la segunda columna (índice 1 ):

 a - np.array( [ [1,2,3], [2,3,4] ] ) a1= a[:,:1] a2= a[:,2:] np.hstack([a1,a2]) 

asi que en general

 def remove_column( a, i ): return np.hstack( [a[:,:i], a[:,(i+1):] ] ) 

y entonces

 >>> remove_column(a, 1) array([[1, 3], [2, 4]]) >>> remove_column(a, 0) array([[2, 3], [3, 4]]) 

En realidad, como se señaló en el comentario, numpy implementa su propio método de delete

 np.delete(a, 1, 1) 

segunda columna eliminada

y eliminar varios se puede realizar utilizando

 np.delete(a, [column1, columne2, ..., columnK], 1) 

El tercer argumento es el especificador de ejes, 0 implicaría filas, 1 columnas, None aplana toda la matriz

Puedes usar numpy.hstack :

 >>> import numpy as np >>> a = np.array([[1,2], [2,3]]) >>> b = np.array([[3], [4]]) >>> np.hstack((a,b)) array([[1, 2, 3], [2, 3, 4]]) 

Eliminar es aún más fácil, solo rebana

 >>> c = a[:,:1] array([[1], [2]]) 
 In [3]: x = np.array([[1, 2], [2, 3]] In [4]: y = np.array([[3], [4]]) In [9]: z = np.hstack([x, y]) In [10]: z Out[10]: array([[1, 2, 3], [2, 3, 4]]) In [11]: z[:,:1] array([[1], [2]])