Show Sidebar Hide Sidebar

# Ravel

How to flatten the elements of a NumPy array into a 1D NumPy array.

#### New to Plotly?¶

You can set up Plotly to work in online or offline mode, or in jupyter notebooks.
We also have a quick-reference cheatsheet (new!) to help you get started!

### Imports¶

This tutorial imports Plotly and Numpy.

In [1]:
import plotly.plotly as py
from plotly.tools import FigureFactory as FF

import numpy as np


#### Ravel¶

np.ravel() is used to "flatten" an ND-array by extracting all its values and returning a 1D-array of all the values from the original.

In [2]:
import plotly.plotly as py
from plotly.tools import FigureFactory as FF

pi_array = np.array([[3, 1, 4, 1],
[5, 9, 2, 6],
[5, 3, 5, 8],
[9, 7, 9, 3]])

ravel_array = np.ravel(pi_array)

fig = FF.create_annotated_heatmap([ravel_array], colorscale='Earth' )
fig.layout.title = '$\pi$'
py.iplot(fig, filename='numpy-ravel-pi')

Out[2]:
In [2]:
help(np.ravel)

Help on function ravel in module numpy.core.fromnumeric:

ravel(a, order='C')
Return a contiguous flattened array.

A 1-D array, containing the elements of the input, is returned.  A copy is

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
----------
a : array_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
-------
y : array_like
If a is a matrix, y is a 1-D ndarray, otherwise y is an array of
the same subtype as a. The shape of the returned array is
(a.size,). Matrices are special cased for backward
compatibility.

--------
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.

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

>>> x = np.array([[1, 2, 3], [4, 5, 6]])
>>> print(np.ravel(x))
[1 2 3 4 5 6]

>>> print(x.reshape(-1))
[1 2 3 4 5 6]

>>> print(np.ravel(x, order='F'))
[1 4 2 5 3 6]

When order is 'A', it will preserve the array's 'C' or 'F' ordering:

>>> print(np.ravel(x.T))
[1 4 2 5 3 6]
>>> print(np.ravel(x.T, order='A'))
[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])