В чем разница между ndarray и array в Numpy? И где я могу найти реализации в исходном коде numpy?
В чем разница между ndarray и array в numpy?
Ответ 1
 numpy.array - это просто numpy.array функция для создания ndarray; это не сам класс.
 Вы также можете создать массив, используя numpy.ndarray, но это не рекомендуемый способ. Из строки документации numpy.ndarray:
Массивы должны быть построены с использованием
array,zerosилиempty... Параметры, приведенные здесь, относятся к низкоуровневому методу (ndarray(...)) для создания экземпляра массива.
Большая часть реализации находится в C-коде, здесь в многопоточном формате, но вы можете начать смотреть на интерфейсы ndarray здесь:
https://github.com/numpy/numpy/blob/master/numpy/core/numeric.py
Ответ 2
 numpy.array - это функция, которая возвращает a numpy.ndarray. Нет типа объекта numpy.array.
Ответ 3
Всего несколько строк примера кода, чтобы показать разницу между 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))
		Ответ 4
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() "
Ответ 5
 Я думаю, что с помощью np.array() вы можете создавать только C, как если бы вы упомянули порядок, когда вы проверяете с помощью np.isfortran() он говорит false. но с помощью np.ndarrray() когда вы указываете порядок, который он создает на основе предоставленного порядка.