Convert a 1D array to a 2D array in numpy
You want to reshape
the array.
B = np.reshape(A, (-1, 2))
where -1
infers the size of the new dimension from the size of the input array.
You have two options:
If you no longer want the original shape, the easiest is just to assign a new shape to the array
a.shape = (a.size//ncols, ncols)
You can switch the
a.size//ncols
by-1
to compute the proper shape automatically. Make sure thata.shape[0]*a.shape[1]=a.size
, else you'll run into some problem.You can get a new array with the
np.reshape
function, that works mostly like the version presented abovenew = np.reshape(a, (-1, ncols))
When it's possible,
new
will be just a view of the initial arraya
, meaning that the data are shared. In some cases, though,new
array will be acopy instead. Note thatnp.reshape
also accepts an optional keywordorder
that lets you switch from row-major C order to column-major Fortran order.np.reshape
is the function version of thea.reshape
method.
If you can't respect the requirement a.shape[0]*a.shape[1]=a.size
, you're stuck with having to create a new array. You can use the np.resize
function and mixing it with np.reshape
, such as
>>> a =np.arange(9)
>>> np.resize(a, 10).reshape(5,2)