2012-06-06 21 views
24

¿Cómo podría escribirse el siguiente código MATLAB utilizando NumPy?Asignando columnas en NumPy?

A = zeros(5, 100); 
x = ones(5,1); 
A(:,1) = x; 

La asignación a filas parece funcionar fácilmente, pero no pude encontrar un ejemplo de asignar una matriz a una columna de otra matriz.

Respuesta

41

Usar a[:,1] = x[:,0]. Necesita x[:,0] para seleccionar la columna de x como una sola matriz numpy. Si tiene la opción de cómo formatear x, es mejor no hacer una matriz bidimensional en primer lugar, sino simplemente una matriz regular (fila):

>>> a 
array([[ 0., 0., 0.], 
     [ 0., 0., 0.], 
     [ 0., 0., 0.], 
     [ 0., 0., 0.], 
     [ 0., 0., 0.]]) 
>>> x = numpy.ones(5) 
>>> x 
array([ 1., 1., 1., 1., 1.]) 
>>> a[:,1] = x 
>>> a 
array([[ 0., 1., 0.], 
     [ 0., 1., 0.], 
     [ 0., 1., 0.], 
     [ 0., 1., 0.], 
     [ 0., 1., 0.]]) 
6
>>> A = np.zeros((5,100)) 
>>> x = np.ones((5,1)) 
>>> A[:,:1] = x