Ответы:
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
Шаг разогрева: составить список
a = [1,2,3]
Проверьте тип
print(type(a))
Ты получишь
<class 'list'>
Построить массив (из списка), используя np.array
a = np.array(a)
Или, вы можете пропустить шаг разогрева, прямо
a = np.array([1,2,3])
Проверьте тип
print(type(a))
Ты получишь
<class 'numpy.ndarray'>
который говорит вам, что тип массива numpy - numpy.ndarray
Вы также можете проверить тип по
isinstance(a, (np.ndarray))
и вы получите
True
Любая из следующих двух строк выдаст вам сообщение об ошибке
np.ndarray(a) # should be np.array(a)
isinstance(a, (np.array)) # should be isinstance(a, (np.ndarray))
numpy.ndarray()
класс, а numpy.array()
метод / функция для создания ndarray
.
В numy docs, если вы хотите создать массив из ndarray
класса, вы можете сделать это двумя способами, как указано:
1- используя array()
, zeros()
или empty()
методы:
Массивы должны быть построены с использованием массива, нули или пустые (см также раздел ниже). Параметры, приведенные здесь, относятся к низкоуровневому методу ( ndarray(…)
) для создания экземпляра массива.
2 - ndarray
непосредственно из класса:
существует два режима создания массива с использованием __new__
: Если для буфера задано None, то используются только shape, dtype и order. Если буфер является объектом, представляющим интерфейс буфера, то все ключевые слова интерпретируются.
Пример ниже дает случайный массив, потому что мы не присваивали значение буфера:
np.ndarray(shape=(2,2), dtype=float, order='F', buffer=None) array([[ -1.13698227e+002, 4.25087011e-303], [ 2.88528414e-306, 3.27025015e-309]]) #random
Другой пример - присвоить объект массива примеру буфера:
>>> np.ndarray((2,), buffer=np.array([1,2,3]), ... offset=np.int_().itemsize, ... dtype=int) # offset = 1*itemsize, i.e. skip first element array([2, 3])
из приведенного выше примера мы заметили, что мы не можем присвоить список «буферу», и нам пришлось использовать numpy.array (), чтобы вернуть объект ndarray для буфера
Вывод: используйте, numpy.array()
если хотите сделать numpy.ndarray()
объект "
Я думаю, что с np.array()
вами можно создать только C, как вы упомянули порядок, когда вы проверяете, используя np.isfortran()
это говорит false. но с np.ndarrray()
указанием порядка, который он создает на основе предоставленного заказа.