Выравнивание массива с помощью NumPy flatten

В этом руководстве вы научитесь понижать размерность массива с помощью функции flatten в NumPy, что означает преобразование массива в одномерный массив. Функция flatten в NumPy позволяет превратить многомерный массив в одномерный. Функция позволяет легко понижать размерность массивов различными способами, включая по столбцам и по строкам.

К концу этого урока вы узнаете:

  • Как сгладить массив NumPy по строкам

  • Как сгладить массив NumPy по столбцам

Содержание

Понимание функции выравнивания NumPy

Перед тем как погрузиться в изучение использования функции flatten в NumPy, давайте рассмотрим, как эта функция работает. По сравнению с многими другими функциями NumPy, эта функция относительно проста.

Метод принимает один необязательный параметр, order=, который определяет способ плоского развертывания массива. Давайте рассмотрим определение метода:

# Понимание метода flatten в NumPy
import numpy as np

ndarray.flatten(
   # Порядок фильтрования (по умолчанию - 'C')
   order='C'
)

В приведенном выше коде мы видим, что метод применяется к массиву. Метод возвращает копию входного массива, приведенную к одномерному виду.

Давайте быстро посмотрим, какие варианты доступны для параметра order=

  • 'C', аргумент по умолчанию, преобразует массив в одномерный в стиле языка C (построчно).

  • 'F' плоско уплощает массив по столбцам (в стиле Fortran)

  • 'A' уплощает массив в порядке следования столбцов, если массив непрерывен в памяти.

  • 'K' плоский массив в порядке, в котором элементы находятся в памяти

В следующем разделе вы узнаете, как выполнить выпрямление массивов NumPy по строкам с помощью функции flatten из NumPy.

Сглаживание массива NumPy по строкам

В этом разделе вы узнаете, как использовать метод flatten библиотеки NumPy для преобразования массива в одномерный, при котором элементы добавляются в соответствии с массивами, в которых они появляются. Для преобразования массивов в одномерный формат построчно можно использовать аргумент по умолчанию

Давайте посмотрим, как можно выполнить выравнивание массива NumPy по строкам:

# Фильтрование массива по строкам
import numpy as np

arr = np.array([
    [1, 2, 3],
    [4, 5, 6]
]) # Массив чисел со встроенными двумерными структурами данных

flattened = arr.flatten() # Фильтрование массива по строкам
print(flattened) # Вывод фильтрованного массива

# Возвращает:
# [1 2 3 4 5 6]

Давайте разберем, что мы сделали в блоке кода выше:

  1. Мы импортировали NumPy как np

  2. Мы затем создали двумерный массив, arr

  3. Затем мы создали новый массив flattened, который является результатом применения метода .flatten() к массиву.

Важно отметить, что метод не изменяет оригинальный массив, но возвращает его разглаженную копию.

Сглаживание массива NumPy по столбцам

В этом разделе вы узнаете, как развернуть массив NumPy по столбцам, то есть элементы разворачиваются в том порядке, в котором они появляются. Это означает, что сначала разворачивается первый элемент каждого массива, затем второй и так далее.

Чтобы развернуть массив NumPy по столбцам, мы можем использовать аргумент order='F' в методе flatten.

# Фильтрование массива по столбцам
import numpy as np

arr = np.array([
    [1, 2, 3],
    [4, 5, 6]
]) # Массив чисел со встроенными двумерными структурами данных

flattened = arr.flatten('F') # Фильтрование массива по столбцам (по умолчанию - порядок 'C')
print(flattened) # Вывод фильтрованного массива

# Возвращает:
# [1 4 2 5 3 6]

В следующем разделе вы узнаете, как использовать NumPy для преобразования списка списков в Python в плоский список с помощью метода flatten в NumPy.

Сглаживание списка списков Python с помощью NumPy Flatten

Метод flatten в NumPy также может быть использован для выравнивания списка списков в Python. Основное ограничение здесь заключается в том, что, поскольку массивы NumPy могут содержать только числовые значения, он не может быть использован для всех типов списков списков.

Давайте посмотрим, как мы можем использовать метод flatten для преобразования в Python списка списков:

# Фильтрование списка списков при помощи NumPy flatten()
import numpy as np

list_of_lists = [
    [1, 2, 3],
    [4, 5, 6]
] # Список из двух вложенных списков чисел

flattened = np.array(list_of_lists).flatten() # Преобразование списка в NumPy-массив и фильтрование его
print(list(flattened)) # Вывод фильтрованного списка в виде списка чисел

# Возвращает:
# [1, 2, 3, 4, 5, 6]

Точно так же, вы можете использовать различные аргументы, чтобы изменить способ, которым эти списки списков будут выпрямлены с помощью NumPy.

Часто задаваемые вопросы

Почему NumPy не работает?

Метод flatten в NumPy не модифицирует массив, а возвращает копию массива. Это означает, что вам нужно присвоить копию новой переменной.

Чем NumPy Flatten отличается от NumPy Ravel и Reshape?

Оба метода ravel() и reshape() возвращают представление (view), если это возможно. Тем временем, метод flatten() возвращает копию.

NumPy выравнивается быстрее, чем NumPy ravel?

Метод ravel() в NumPy почти всегда работает быстрее, чем flatten(). Это связано с тем, что для создания копии Python сначала нужно выделить новую память.

Заключение

В этом учебнике вы научились использовать метод flatten() библиотеки NumPy. Этот метод позволяет преобразовать многомерный массив в одномерный. Сначала вы узнали, как определен метод и какой параметр доступен. Затем вы научились использовать метод flatten для преобразования массива по столбцам и по строкам. Наконец, вы узнали, как использовать метод для преобразования списка списков.

Дополнительные ресурсы

Чтобы узнать больше о схожих темах, ознакомьтесь с нижеприведенными учебными пособиями:

Last updated