Как преобразовать NumPy массив в список Python
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Преобразовать массив NumPy в список Python можно с помощью метода .tolist()
:
import numpy as np
numpy_array = np.array([1, 2, 3])
print(numpy_array.tolist()) # Вывод: [1, 2, 3]
Для многомерных массивов метод .tolist()
генерирует вложенные списки:
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 в результирующем списке сохраняются:
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 важно перед его преобразованием. Конвертация многомерного массива в список создаст структуру со вложенными списками, соответствующую многомерности исходного массива.
Обеспечение сохранности данных
Перед конвертацией массива стоит проверить его размерности и форму для обеспечения точности передачи данных:
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()
:
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 можно представить визуально следующим образом:
import numpy as np
numpy_array = np.array([1, 2, 3, 4])
python_list = numpy_array.tolist()
Пример перехода от массива NumPy к списку Python:
Массив NumPy: 💠💠💠💠
После: 1️⃣ 2️⃣ 3️⃣ 4️⃣ [Список Python]
Таким образом, метод .tolist()
преобразует массив NumPy в список Python.
Альтернативные способы (включая иное от tolist())
Если по каким-либо причинам .tolist()
не подходит, существуют другие варианты:
Сглаживание: альтернативный подход
Во-первых, мы можем применить другой метод для преобразования многомерного массива в плоский список:
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:
import numpy as np
python_list = [1, 2, 3, 4]
numpy_array = np.asarray(python_list)
print(numpy_array) # Вывод: [1, 2, 3, 4]
Изменение формы массива
Если необходимо, массив NumPy может изменить свою форму:
import numpy as np
numpy_array = np.arange(6).reshape(2, 3)
print(numpy_array.tolist()) # Вывод: [[0, 1, 2], [3, 4, 5]]
Применение списковых включений
Списковые включения могут быть полезны при работе с DataFrame из библиотеки pandas:
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]
Проверка после преобразования
После конвертации следует проверить тип, размер и форму полученного списка:
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)}")
Полезные материалы
- numpy.ndarray.tolist — Руководство NumPy версии 1.26 — Официальная документация по преобразованию массивов NumPy в списки.
- Преобразование массива NumPy в список Python – Stack Overflow — Форум для обсуждения вопросов, связанных с работой с массивами.
- TimeComplexity – Вики Python — Информация о временной сложности операций со списками в Python.
- Типы данных (dtype) — Руководство NumPy версии 1.26 — Ознакомьтесь с типами данных NumPy для использования при преобразовании массивов.
- Вводный урок по NumPy – YouTube — Видеоурок для тех, кто только начинает работу с матрицами.
- Быстрый старт NumPy — Руководство NumPy версии 1.26 — Базовая информация о NumPy, доступная и понятная для начинающих.
- Встроенные типы — Документация Python 3.12.2 — Раздел документации Python, посвященный спискам.