2013-04-08 2 views

ответ

100

Ну, numpy.array - это просто удобная функция для создания ndarray, это не сам класс.

Вы также можете создать массив, используя numpy.ndarray, но это не рекомендуется. Из numpy.ndarray в строку документации:

Массивы должны быть построены с использованием array, zeros или empty ... Параметры, приведенные здесь, относятся к способу низкого уровня (ndarray(...)) для создания экземпляра массива.

Большая часть мяса реализации в коде C, here in multiarray, но вы можете начать смотреть на ndarray интерфейсов здесь:

https://github.com/numpy/numpy/blob/master/numpy/core/numeric.py

+1

Я думаю, что массив () реализуется в [core/src/multiarray/methods.c] (https://github.com/numpy/numpy/blob/master/numpy/core/src/mu ltiarray/methods.c) в array_getarray(). – flxb

+1

Это может вас укусить, если вы забудете, что 'np.array' не является классом, как я часто это делаю. 'x = np.array ([1,2,1,3])' 'if isinstance (x, np.array): # даст вам TypeError' –

29

numpy.array - это функция, которая возвращает numpy.ndarray. Нет типа объекта numpy.array.

5

всего несколько строк кода примера, чтобы показать разница между 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.darray(a)     # should be np.array(a) 
isinstance(a, (np.array)) # should be isinstance(a, (np.ndarray)) 
Смежные вопросы