Te traemos la contestación a esta problema, o por lo menos eso deseamos. Si tienes dudas coméntalo, que para nosotros será un gusto responderte
Solución:
Estas buscando np.r_
y np.c_
. (Piense en “pila de columnas” y “pila de filas” (que también son funciones) pero con generaciones de rango de estilo matlab).
Ver también np.concatenate
, np.vstack
, np.hstack
, np.dstack
, np.row_stack
, np.column_stack
etc.
Por ejemplo:
import numpy as np
m = np.zeros((10, 4))
v = np.ones((10, 1))
c = np.c_[m, v]
Rendimientos:
array([[ 0., 0., 0., 0., 1.],
[ 0., 0., 0., 0., 1.],
[ 0., 0., 0., 0., 1.],
[ 0., 0., 0., 0., 1.],
[ 0., 0., 0., 0., 1.],
[ 0., 0., 0., 0., 1.],
[ 0., 0., 0., 0., 1.],
[ 0., 0., 0., 0., 1.],
[ 0., 0., 0., 0., 1.],
[ 0., 0., 0., 0., 1.]])
Esto también es equivalente a np.hstack([m, v])
o np.column_stack([m, v])
Si no vienes de matlab, hstack
y column_stack
probablemente parezca mucho más legible y descriptivo. (Y podría decirse que son mejores en este caso por esa razón).
Sin embargo, np.c_
y np.r_
tienen una funcionalidad adicional que la gente que viene de matlab suele esperar. Por ejemplo:
In [7]: np.r_[1:5, 2]
Out[7]: array([1, 2, 3, 4, 2])
O:
In [8]: np.c_[m, 0:10]
Out[8]:
array([[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 1.],
[ 0., 0., 0., 0., 2.],
[ 0., 0., 0., 0., 3.],
[ 0., 0., 0., 0., 4.],
[ 0., 0., 0., 0., 5.],
[ 0., 0., 0., 0., 6.],
[ 0., 0., 0., 0., 7.],
[ 0., 0., 0., 0., 8.],
[ 0., 0., 0., 0., 9.]])
En cualquier caso, para la gente de matlab, es útil conocer np.r_
y np.c_
además de vstack
, hstack
etc.
En numpy es similar:
>>> m=np.zeros((10,4))
>>> m
array([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
>>> v=np.ones((10,1))
>>> v
array([[ 1.],
[ 1.],
[ 1.],
[ 1.],
[ 1.],
[ 1.],
[ 1.],
[ 1.],
[ 1.],
[ 1.]])
>>> np.c_[m,v]
array([[ 0., 0., 0., 0., 1.],
[ 0., 0., 0., 0., 1.],
[ 0., 0., 0., 0., 1.],
[ 0., 0., 0., 0., 1.],
[ 0., 0., 0., 0., 1.],
[ 0., 0., 0., 0., 1.],
[ 0., 0., 0., 0., 1.],
[ 0., 0., 0., 0., 1.],
[ 0., 0., 0., 0., 1.],
[ 0., 0., 0., 0., 1.]])
Puedes reafirmar nuestro cometido ejecutando un comentario y dejando una puntuación te damos la bienvenida.