Jaka jest różnica między ndarray
i array
w Numpy? A gdzie mogę znaleźć implementacje w kodzie źródłowym numpy?
240
Jaka jest różnica między ndarray
i array
w Numpy? A gdzie mogę znaleźć implementacje w kodzie źródłowym numpy?
numpy.array
jest tylko funkcją ułatwiającą tworzenie ndarray
; to nie jest sama klasa.
Możesz także utworzyć tablicę za pomocą numpy.ndarray
, ale nie jest to zalecany sposób. Z dokumentacji numpy.ndarray
:
Tablice powinny być konstruowane z użyciem
array
,zeros
alboempty
... Parametry podane odnoszą się do metody niskiego poziomu (ndarray(...)
) dla instancji tablicę.
Większość treści implementacji znajduje się w kodzie C, tutaj w wielu tablicach , ale możesz zacząć patrzeć na interfejsy ndarray tutaj:
https://github.com/numpy/numpy/blob/master/numpy/core/numeric.py
np.array
to nie jest klasa, jak to często robię.x = np.array([1,2.1,3])
if isinstance(x,np.array): # will give you a TypeError
array_getarray
to implementacjanumpy.ndarray.__array__
.numpy.array
zaczyna się_array_fromobject
, przynajmniej w obecnej implementacji.numpy.array
jest funkcją, która zwraca anumpy.ndarray
. Nie ma typu obiektu numpy.array.źródło
Tylko kilka wierszy przykładowego kodu, aby pokazać różnicę między numpy.array i numpy.ndarray
Krok rozgrzewki: stwórz listę
Sprawdź typ
Dostaniesz
Zbuduj tablicę (z listy) za pomocą np.array
Lub możesz pominąć krok rozgrzewki, bezpośrednio
Sprawdź typ
Dostaniesz
który informuje, że typ tablicy numpy to numpy.ndarray
Możesz także sprawdzić typ według
i dostaniesz
Każdy z dwóch poniższych wierszy wyświetli komunikat o błędzie
źródło
numpy.ndarray()
jest klasą, podczas gdynumpy.array()
jest metodą / funkcją do utworzeniandarray
.W Numpy Docs, jeśli chcesz utworzyć tablicę z
ndarray
klasy, możesz to zrobić na dwa sposoby, jak podano:1 za pomocą
array()
,zeros()
lubempty()
metody: Tablice powinny być konstruowane przy użyciu macierzy, zera lub puste (patrz Patrz również opisano poniżej). Podane tutaj parametry odnoszą się do metody niskiego poziomu (ndarray(…)
) do tworzenia instancji tablicy.2-
ndarray
bezpośrednio z klasy: Istnieją dwa tryby tworzenia tablicy za pomocą__new__
: Jeśli bufor to Brak, wówczas używany jest tylko kształt, typ i kolejność. Jeśli bufor jest obiektem ujawniającym interfejs bufora, wówczas wszystkie słowa kluczowe są interpretowane.Poniższy przykład podaje losową tablicę, ponieważ nie przypisaliśmy wartości bufora:
innym przykładem jest przypisanie obiektu tablicy do przykładu bufora:
z powyższego przykładu zauważamy, że nie możemy przypisać listy do „bufora” i musieliśmy użyć numpy.array (), aby zwrócić obiekt ndarray dla bufora
Wniosek: użyj,
numpy.array()
jeśli chcesz zrobićnumpy.ndarray()
obiekt „źródło
Myślę, że z
np.array()
Tobą możesz stworzyć C tak, jakbyś wspomniał o kolejności, kiedy zaznaczysz, że używasznp.isfortran()
, mówi false. ale znp.ndarrray()
określeniem zamówienia tworzy się na podstawie podanego zamówienia.źródło