Assigning to columns in NumPy

Question:

How could the following MATLAB code be written using NumPy?

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

Assigning to rows seems to work easily, but I couldn’t find an example of assigning an array to a column of another array.

Asked By: Benno

||

Answers:

>>> A = np.zeros((5,100))
>>> x = np.ones((5,1))
>>> A[:,:1] = x
Answered By: fraxel

Use a[:,1] = x[:,0]. You need x[:,0] to select the column of x as a single numpy array. If you have the choice of how to format x, it’s better to not make it a 2-dimensional array in the first place, but just a regular (row) array:

>>> 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.]])
Answered By: BrenBarn
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.