Как преобразовать NumPy массив в список Python

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Преобразовать массив NumPy в список Python можно с помощью метода .tolist():

Python
Скопировать код
import numpy as np

numpy_array = np.array([1, 2, 3])
print(numpy_array.tolist())  # Вывод: [1, 2, 3]

Для многомерных массивов метод .tolist() генерирует вложенные списки:

Python
Скопировать код
import numpy as np

numpy_array_2d = np.array([[1, 2, 3], [4, 5, 6]])
print(numpy_array_2d.tolist())  # Вывод: [[1, 2, 3], [4, 5, 6]]

Функция list() и типы данных NumPy

При использовании функции list() типы данных NumPy в результирующем списке сохраняются:

Python
Скопировать код
import numpy as np

numpy_array = np.array([np.int32(1), np.float32(2), np.complex64(3+2j)])
python_list = list(numpy_array)
print(python_list)  # Вывод: [numpy.int32(1), numpy.float32(2), numpy.complex64(3+2j)]

Осознание размерностей и форм

Понимание размерностей и формы массива NumPy важно перед его преобразованием. Конвертация многомерного массива в список создаст структуру со вложенными списками, соответствующую многомерности исходного массива.

Обеспечение сохранности данных

Перед конвертацией массива стоит проверить его размерности и форму для обеспечения точности передачи данных:

Python
Скопировать код
import numpy as np

numpy_array_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(f"Форма до преобразования: {numpy_array_3d.shape}")
converted_list = numpy_array_3d.tolist()
print(f"Глубина преобразованного списка: {len(converted_list)}")

Методы для выравнивания массива

Для преобразования многомерного массива в плоский список можно использовать методы ndarray.flatten() или np.ravel():

Python
Скопировать код
import numpy as np

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

flat_list = numpy_array_3d.flatten().tolist()
print(flat_list)  # Вывод: [1, 2, 3, 4, 5, 6, 7, 8]

flat_list_ravel = np.ravel(numpy_array_3d).tolist()
print(flat_list_ravel)  # Выводит такой же результат

Визуализация

Преобразование массива NumPy в список Python можно представить визуально следующим образом:

Python
Скопировать код
import numpy as np

numpy_array = np.array([1, 2, 3, 4])
python_list = numpy_array.tolist()

Пример перехода от массива NumPy к списку Python:

Markdown
Скопировать код
Массив NumPy: 💠💠💠💠 
После:      1️⃣  2️⃣  3️⃣  4️⃣  [Список Python]

Таким образом, метод .tolist() преобразует массив NumPy в список Python.

Альтернативные способы (включая иное от tolist())

Если по каким-либо причинам .tolist() не подходит, существуют другие варианты:

Сглаживание: альтернативный подход

Во-первых, мы можем применить другой метод для преобразования многомерного массива в плоский список:

Python
Скопировать код
import numpy as np
import itertools

numpy_array_2d = np.array([[1, 2], [3, 4]])

flat_list_alternative = list(itertools.chain.from_iterable(numpy_array_2d))
print(flat_list_alternative)  # Вывод: [1, 2, 3, 4]

Обратное преобразование

Затем, мы можем легко переконвертировать список обратно в массив NumPy:

Python
Скопировать код
import numpy as np

python_list = [1, 2, 3, 4]
numpy_array = np.asarray(python_list)
print(numpy_array)  # Вывод: [1, 2, 3, 4]

Изменение формы массива

Если необходимо, массив NumPy может изменить свою форму:

Python
Скопировать код
import numpy as np

numpy_array = np.arange(6).reshape(2, 3)
print(numpy_array.tolist())  # Вывод: [[0, 1, 2], [3, 4, 5]]

Применение списковых включений

Списковые включения могут быть полезны при работе с DataFrame из библиотеки pandas:

Python
Скопировать код
import numpy as np
import pandas as pd

df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6]]))
list_flattened = [element for sublist in df.values for element in sublist]
print(list_flattened)  # Вывод: [1, 2, 3, 4, 5, 6]

Проверка после преобразования

После конвертации следует проверить тип, размер и форму полученного списка:

Python
Скопировать код
import numpy as np

numpy_array = np.array([[1, 2], [3, 4]])
converted_list = numpy_array.tolist()
print(f"Тип до: {type(numpy_array)}, Размер до: {numpy_array.shape}")
print(f"Тип после: {type(converted_list)}, Размер после: {len(converted_list)}")

Полезные материалы

  1. numpy.ndarray.tolist — Руководство NumPy версии 1.26 — Официальная документация по преобразованию массивов NumPy в списки.
  2. Преобразование массива NumPy в список Python – Stack Overflow — Форум для обсуждения вопросов, связанных с работой с массивами.
  3. TimeComplexity – Вики Python — Информация о временной сложности операций со списками в Python.
  4. Типы данных (dtype) — Руководство NumPy версии 1.26 — Ознакомьтесь с типами данных NumPy для использования при преобразовании массивов.
  5. Вводный урок по NumPy – YouTube — Видеоурок для тех, кто только начинает работу с матрицами.
  6. Быстрый старт NumPy — Руководство NumPy версии 1.26 — Базовая информация о NumPy, доступная и понятная для начинающих.
  7. Встроенные типы — Документация Python 3.12.2 — Раздел документации Python, посвященный спискам.