Jaka jest różnica między ndarray i array w numpy?
Jaka jest różnica między ndarray
a array
w Numpy? A gdzie mogę znaleźć implementacje w kodzie źródłowym numpy?
5 answers
numpy.array
jest tylko wygodną funkcją do tworzenia ndarray
; nie jest samą klasą.
Można również utworzyć tablicę używając numpy.ndarray
, ale nie jest to zalecany sposób. From the docstring of numpy.ndarray
:
Tablice powinny być konstruowane przy użyciu
array
,zeros
lubempty
... Podane tutaj parametry odnoszą się do metoda niskiego poziomu (ndarray(...)
) do tworzenia instancji tablicy.
Większość implementacji jest w kodzie C, tutaj w multiarray , Ale ty można zacząć szukać interfejsów ndarray tutaj:
Https://github.com/numpy/numpy/blob/master/numpy/core/numeric.py
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-27 14:40:19
numpy.array
Jest funkcją zwracającą numpy.ndarray
. Nie istnieje obiekt typu numpy./ align = "left" /
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-01 11:42:33
Wystarczy kilka linijek przykładowego kodu, aby pokazać różnicę między numpy.array i numpy.ndarray
Etap rozgrzewki: Zbuduj listę
a = [1,2,3]
Sprawdź typ
print(type(a))
Dostaniesz
<class 'list'>
Zbuduj tablicę (z listy) używając np.array
a = np.array(a)
Lub możesz pominąć etap rozgrzewki, bezpośrednio mieć
a = np.array([1,2,3])
Sprawdź typ
print(type(a))
Dostaniesz
<class 'numpy.ndarray'>
Który mówi ci typ z tablicy numpy jest numpy.ndarray
Możesz również sprawdzić typ za pomocą
isinstance(a, (np.ndarray))
I dostaniesz
True
Jedna z poniższych linii wyświetli komunikat o błędzie
np.ndarray(a) # should be np.array(a)
isinstance(a, (np.array)) # should be isinstance(a, (np.ndarray))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-21 03:50:56
numpy.ndarray()
jest klasą, natomiast {[3] } jest metodą / funkcją do tworzenia ndarray
.
W numpy docs jeśli chcesz utworzyć tablicę z klasy ndarray
możesz to zrobić na dwa sposoby:
1-używanie array()
, zeros()
lub empty()
metody:
Tablice powinny być konstruowane przy użyciu tablic, zer lub empty(patrz także sekcja poniżej). Parametry podane tutaj odnoszą się do metody niskiego poziomu (ndarray(…)
) do tworzenia instancji tablicy.
2 - z klasy ndarray
bezpośrednio:
tam są dwa tryby tworzenia tablicy za pomocą __new__
:
Jeżeli bufor jest None, wtedy używane są tylko shape, dtype i order.
Jeżeli bufor jest obiektem eksponującym interfejs bufora, wtedy interpretowane są wszystkie słowa kluczowe.
Poniższy przykład podaje tablicę losową, ponieważ nie przypisaliśmy wartości bufora:
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
Innym przykładem jest przypisanie obiektu array do bufora przykład:
>>> 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])
Z powyższego przykładu zauważamy, że nie możemy przypisać listy do "bufor" i musieliśmy użyć numpy.array() zwraca obiekt ndarray dla bufora
Wniosek: użyj numpy.array()
Jeśli chcesz stworzyć numpy.ndarray()
obiekt "
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-08-27 11:59:21
Myślę, że z np.array()
można utworzyć tylko C jak wspominasz kolejność, gdy sprawdzasz używając {[1] } to mówi false. ale z np.ndarrray()
Kiedy określisz kolejność, którą tworzy na podstawie podanej kolejności.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-30 21:40:31