Какая разница между ndarray
и array
в Numpy? И где я могу найти реализации в NumPy исходный код?
242
Какая разница между ndarray
и array
в Numpy? И где я могу найти реализации в NumPy исходный код?
numpy.array
это просто удобная функция для создания ndarray
; это не сам класс.
Вы также можете создать массив с помощью numpy.ndarray
, но это не рекомендуемый способ. Из документации numpy.ndarray
:
Массивы должны быть созданы с использованием
array
,zeros
илиempty
... Параметры, приведенные здесь, относятся к низкоуровневому методу (ndarray(...)
) для создания экземпляра массива.
Большая часть реализации реализована в коде на C, здесь - в нескольких массивах , но вы можете посмотреть на интерфейсы ndarray здесь:
https://github.com/numpy/numpy/blob/master/numpy/core/numeric.py
np.array
это не класс, как я часто это делаю.x = np.array([1,2.1,3])
if isinstance(x,np.array): # will give you a TypeError
array_getarray
это реализацияnumpy.ndarray.__array__
.numpy.array
начинается_array_fromobject
, по крайней мере, в текущей реализации.numpy.array
это функция, которая возвращаетnumpy.ndarray
. Нет типа объекта numpy.array.источник
Всего несколько строк примера кода, чтобы показать разницу между numpy.array и numpy.ndarray
Шаг разогрева: составить список
Проверьте тип
Ты получишь
Построить массив (из списка), используя np.array
Или, вы можете пропустить шаг разогрева, прямо
Проверьте тип
Ты получишь
который говорит вам, что тип массива numpy - numpy.ndarray
Вы также можете проверить тип по
и вы получите
Любая из следующих двух строк выдаст вам сообщение об ошибке
источник
numpy.ndarray()
класс, аnumpy.array()
метод / функция для созданияndarray
.В numy docs, если вы хотите создать массив из
ndarray
класса, вы можете сделать это двумя способами, как указано:1- используя
array()
,zeros()
илиempty()
методы: Массивы должны быть построены с использованием массива, нули или пустые (см также раздел ниже). Параметры, приведенные здесь, относятся к низкоуровневому методу (ndarray(…)
) для создания экземпляра массива.2 -
ndarray
непосредственно из класса: существует два режима создания массива с использованием__new__
: Если для буфера задано None, то используются только shape, dtype и order. Если буфер является объектом, представляющим интерфейс буфера, то все ключевые слова интерпретируются.Пример ниже дает случайный массив, потому что мы не присваивали значение буфера:
Другой пример - присвоить объект массива примеру буфера:
из приведенного выше примера мы заметили, что мы не можем присвоить список «буферу», и нам пришлось использовать numpy.array (), чтобы вернуть объект ndarray для буфера
Вывод: используйте,
numpy.array()
если хотите сделатьnumpy.ndarray()
объект "источник
Я думаю, что с
np.array()
вами можно создать только C, как вы упомянули порядок, когда вы проверяете, используяnp.isfortran()
это говорит false. но сnp.ndarrray()
указанием порядка, который он создает на основе предоставленного заказа.источник