Метод ravel
Метод ravel преобразует многомерный массив
в одномерный. В отличие от метода flatten,
который всегда создает копию, ravel
возвращает представление исходного массива
(копия создается только в случае необходимости).
Это делает метод более эффективным по памяти.
Метод принимает один необязательный параметр
order, который определяет порядок
обхода элементов при разворачивании.
Синтаксис
arr.ravel([order])
Параметры
Параметр order определяет порядок
чтения элементов из исходного массива.
Возможные значения:
-
'C'- порядок C (индексы строк изменяются медленнее всего) -
'F'- порядок Fortran (индексы столбцов изменяются медленнее всего) -
'A'- порядок, соответствующий памяти (C, если массив C-непрерывен, иначе Fortran) -
'K'- порядок, соответствующий тому, как элементы хранятся в памяти
По умолчанию используется 'C'.
Пример
Давайте создадим двумерный массив и развернем его в одномерный:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
res = arr.ravel()
print(res)
Результат выполнения кода:
[1 2 3 4 5 6]
Пример
Проверим, что метод возвращает представление, а не копию. Изменение полученного массива приведет к изменению исходного:
import numpy as np
arr = np.array([[1, 2], [3, 4]])
flat = arr.ravel()
flat[0] = 99
print(arr)
Результат выполнения кода:
[[99 2]
[ 3 4]]
Пример
Используем параметр order со значением
'F' для разворачивания в порядке
Fortran (по столбцам):
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
res = arr.ravel(order='F')
print(res)
Результат выполнения кода:
[1 4 2 5 3 6]
Пример
При использовании параметра 'K'
элементы извлекаются в том порядке, в котором
они хранятся в памяти:
import numpy as np
arr = np.array([[1, 2], [3, 4]])
res = arr.ravel(order='K')
print(res)
Результат выполнения кода:
[1 2 3 4]