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?

Author: kmario23, 2013-04-08

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 lub empty... 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

 248
Author: wim,
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" /

 54
Author: Ramón J Romero y Vigil,
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))
 38
Author: Ying,
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 "

 6
Author: Mahmoud Elshahat,
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.

 0
Author: Sujith Rao,
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