Различие функций np.array() и np.asarray() в NumPy
Быстрый ответ
Функция np.array() каждый раз создаёт полную копию данных, в то время как np.asarray() старается избегать копирования, когда это возможно. Рассмотрим пример для наглядности:
import numpy as np
new_array_with_copy = np.array([1, 2, 3]) # np.array() всегда создает полную копию
new_array_no_copy = np.asarray(new_array_with_copy) # np.asarray() избегает копирования, если это применимо
new_array_with_copy[0] = 99 # Изменяем первый элемент, повлияет ли это на np.asarray()?
print(new_array_no_copy) # Если выводит [1, 2, 3], то копирование не произошло!
Таким образом, np.array() можно рассматривать как инвестицию в будущее за счёт создания копии, а np.asarray() – как способ экономии ресурсов, когда это позволено.

Когда использовать что?
- Хотите обезопасить данные от изменений? Используйте
np.array(), чтобы гарантировать сохранность исходных данных. - Заботитесь о памяти?
np.asarray()станет вашим выгодным выбором при работе со значительными массивами. - Нужны дополнительные параметры?
np.array()предлагает множество опций, включаяcopy,dtype,order.
Что скрывается внутри?
np.asarray() проста и непосредственна: если данные уже представлены массивом, она использует их в соответствующем виде, что делает функцию быстрее и более эффективной с точки зрения использования памяти.
np.array(), в свою очередь, настоящий маг, который обладает широкими возможностями благодаря параметрам dtype, order, copy.
Совет джедаев: Если необходимо убедиться, что в массиве нет nan или inf, воспользуйтесь функцией np.asarray_chkfinite.
Контроль над процедурой копирования
В np.array() вы можете применить параметр copy для управления копированиями данных: True (создать копию) или False (значение по умолчанию). Процедура np.asarray() по умолчанию предполагает copy=False, если иное не указано явно.
Память в противовес производительности
В сфере высокой производительности, np.asarray() помогает сократить израсходование памяти. Исключение ненужного копирования данных позволяет освободить ресурсы для увеличения производительности.
Визуализация
Представьте, что у вас есть комок теста 🍩:
np.array()всегда берет новую посуду для теста, подобно кулинарному шоу.np.asarray()оценивает, нужно ли новое блюдо для теста, или можно использовать то, что уже есть.
Специализированные функции
NumPy предлагает в своем распоряжении такие инструменты, как np.ascontiguousarray и np.asfortranarray, создающие массивы с определенной структурой памяти для улучшения производительности.
Практическое применение:
- Для работы с функциями C/C++ используйте
np.ascontiguousarray. - Совместимость с библиотекой Fortran обеспечивается с помощью
np.asfortranarray.
Удобные функции
NumPy обеспечивает доступ к таким функциям, как np.copy(), чтобы улучшить читабельность кода. np.array(obj, copy=True) может показаться избыточной, но она явно выражает ваше намерение сделать точную копию.
Совет: При использовании np.asarray() для сокращения копирования перед выполнением операций:
result = np.asarray(x).sum() # Оптимизируем использование памяти перед суммированием!


