numpy.ravel

numpy.ravel(a, order='C')

Функция ravel() возвращает сжатый до одной оси массив.

Параметры:
а - подобный массиву объект
Массив любой формы и размерности, который будет сжат до одной оси. Элементы в a перебираются в порядке указанном в параметре order.
order - 'K', 'A', 'C' или 'F' (необязательный)
Этот параметр определяет в каком порядке массивы должны храниться в памяти: строчном C-стиле или столбчатом стиле Fortran. Если object не является массивом NumPy, то созданный массив будет находиться в памяти в строковом С порядке, если указать флаг 'F', то будет храниться в столбчатом порядке 'Fortran'. Если object - это массив NumPy, то флаг 'K' либо сохраняет порядок исходного массива либо устанавливает самый близкий по структуре; флаг 'A' установит макет памяти выходного массива в 'F' если массив a является смежным со столбчатым стилем Fortran, в противном случае макет памяти будет установлен в 'C'. По умолчанию флаг установлен в значение 'C'.
Возвращает:
array_like - подобный массиву объект
Сжатый до одной оси массив a.
Смотрите так же: flat, flatten, reshape

Замечание

Параметр order по умолчанию установлен в значение C т.е. чтение данных исходного массива выполняется "построчно" (индекс первой оси меняется медленнее чем последней). Если исходный массив организован в памяти в стиле Fortran, при котором чтение данных массива выполняется "по столбцам" (индекс первой оси меняется быстрее чем последней), а order = 'С', то данные которые должны быть прочитаны "по столбцам" будут считаны "построчно", что приведет к другому расположению элементов в сжатом массиве.

Для сжатия массивов до одной оси можно воспользоваться a.reshape(-1) или numpy.reshape(a, -1).



Примеры

>>> import numpy as np
>>> 
>>> a = np.arange(9)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8])
>>> 
>>> b = a.reshape(3, 3)
>>> b
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>> 
>>> np.ravel(b)
array([0, 1, 2, 3, 4, 5, 6, 7, 8])
>>> 
>>> b.reshape(-1)
array([0, 1, 2, 3, 4, 5, 6, 7, 8])
>>> 
>>> np.ravel(b, order = 'C')
array([0, 1, 2, 3, 4, 5, 6, 7, 8])
>>> 
>>> np.ravel(b, order = 'F')
array([0, 3, 6, 1, 4, 7, 2, 5, 8])
>>>
>>>
>>> b
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>> 
>>> c = b.T
>>> c
array([[0, 3, 6],
       [1, 4, 7],
       [2, 5, 8]])
>>> 
>>> np.ravel(c)
array([0, 3, 6, 1, 4, 7, 2, 5, 8])
>>> 
>>> np.ravel(c, order = 'C')
array([0, 3, 6, 1, 4, 7, 2, 5, 8])
>>> 
>>> np.ravel(c, order = 'F')
array([0, 1, 2, 3, 4, 5, 6, 7, 8])
>>> 
>>> np.ravel(c, order = 'A')
array([0, 1, 2, 3, 4, 5, 6, 7, 8])
>>> 
>>> 
>>> a = np.arange(12).reshape(2, 3, 2)
>>> a
array([[[ 0,  1],
        [ 2,  3],
        [ 4,  5]],

       [[ 6,  7],
        [ 8,  9],
        [10, 11]]])
>>> 
>>> a.ravel()
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
>>> 
>>> a.ravel(order = 'F')
array([ 0,  6,  2,  8,  4, 10,  1,  7,  3,  9,  5, 11])