numpy.ravel#

numpy.ravel(a, order='C')[source]#

Return a contiguous flattened array.

A 1-D array, containing the elements of the input, is returned. A copy is made only if needed.

As of NumPy 1.10, the returned array will have the same type as the input array. (for example, a masked array will be returned for a masked array input)

Parameters:
aarray_like

Input array. The elements in a are read in the order specified by order, and packed as a 1-D array.

order{β€˜C’,’F’, β€˜A’, β€˜K’}, optional

The elements of a are read using this index order. β€˜C’ means to index the elements in row-major, C-style order, with the last axis index changing fastest, back to the first axis index changing slowest. β€˜F’ means to index the elements in column-major, Fortran-style order, with the first index changing fastest, and the last index changing slowest. Note that the β€˜C’ and β€˜F’ options take no account of the memory layout of the underlying array, and only refer to the order of axis indexing. β€˜A’ means to read the elements in Fortran-like index order if a is Fortran contiguous in memory, C-like order otherwise. β€˜K’ means to read the elements in the order they occur in memory, except for reversing the data when strides are negative. By default, β€˜C’ index order is used.

Returns:
yarray_like

y is a contiguous 1-D array of the same subtype as a, with shape (a.size,). Note that matrices are special cased for backward compatibility, if a is a matrix, then y is a 1-D ndarray.

See also

ndarray.flat

1-D iterator over an array.

ndarray.flatten

1-D array copy of the elements of an array in row-major order.

ndarray.reshape

Change the shape of an array without changing its data.

Notes

In row-major, C-style order, in two dimensions, the row index varies the slowest, and the column index the quickest. This can be generalized to multiple dimensions, where row-major order implies that the index along the first axis varies slowest, and the index along the last quickest. The opposite holds for column-major, Fortran-style index ordering.

When a view is desired in as many cases as possible, arr.reshape(-1) may be preferable. However, ravel supports K in the optional order argument while reshape does not.

Examples

It is equivalent to reshape(-1, order=order).

>>> import numpy as np
>>> x = np.array([[1, 2, 3], [4, 5, 6]])
>>> np.ravel(x)
array([1, 2, 3, 4, 5, 6])
>>> x.reshape(-1)
array([1, 2, 3, 4, 5, 6])
>>> np.ravel(x, order='F')
array([1, 4, 2, 5, 3, 6])

When order is β€˜A’, it will preserve the array’s β€˜C’ or β€˜F’ ordering:

>>> np.ravel(x.T)
array([1, 4, 2, 5, 3, 6])
>>> np.ravel(x.T, order='A')
array([1, 2, 3, 4, 5, 6])

When order is β€˜K’, it will preserve orderings that are neither β€˜C’ nor β€˜F’, but won’t reverse axes:

>>> a = np.arange(3)[::-1]; a
array([2, 1, 0])
>>> a.ravel(order='C')
array([2, 1, 0])
>>> a.ravel(order='K')
array([2, 1, 0])
>>> a = np.arange(12).reshape(2,3,2).swapaxes(1,2); a
array([[[ 0,  2,  4],
        [ 1,  3,  5]],
       [[ 6,  8, 10],
        [ 7,  9, 11]]])
>>> a.ravel(order='C')
array([ 0,  2,  4,  1,  3,  5,  6,  8, 10,  7,  9, 11])
>>> a.ravel(order='K')
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])