python - una - Concatenando vectores de columnas usando matrices numpy
transpuesta de una matriz en python numpy (2)
Me gustaría concatenar vectores de ''columna'' usando matrices numpy pero como numpy ve todas las matrices como vectores de fila por defecto, np.hstack
y np.concatenate
largo de cualquier eje no ayudan (y tampoco np.transpose
como se esperaba).
a = np.array((0, 1))
b = np.array((2, 1))
c = np.array((-1, -1))
np.hstack((a, b, c))
# array([ 0, 1, 2, 1, -1, -1]) ## Noooooo
np.reshape(np.hstack((a, b, c)), (2, 3))
# array([[ 0, 1, 2], [ 1, -1, -1]]) ## Reshaping won''t help
Una posibilidad (pero demasiado engorroso) es
np.hstack((a[:, np.newaxis], b[:, np.newaxis], c[:, np.newaxis]))
# array([[ 0, 2, -1], [ 1, 1, -1]]) ##
¿Hay mejores maneras?
Creo que numpy.column_stack debería hacer lo que quieres. Ejemplo:
>>> a = np.array((0, 1))
>>> b = np.array((2, 1))
>>> c = np.array((-1, -1))
>>> numpy.column_stack((a,b,c))
array([[ 0, 2, -1],
[ 1, 1, -1]])
Es esencialmente igual a
>>> numpy.vstack((a,b,c)).T
aunque. Como se dice en la documentación.
Intenté lo siguiente. Espero que esto sea lo suficientemente bueno para lo que estás haciendo?
>>> np.vstack((a,b,c))
array([[ 0, 1],
[ 2, 1],
[-1, -1]])
>>> np.vstack((a,b,c)).T
array([[ 0, 2, -1],
[ 1, 1, -1]])