Jaka jest różnica między funkcjami Numpy'ego array()
i asarray()
? Kiedy należy użyć jednego, a nie drugiego? Wydaje się, że generują identyczny wynik dla wszystkich wejść, jakie mogę wymyślić.Numpy - array vs asarray
Odpowiedz
definition of asarray
jest:
Tak to jest jak array
, oprócz tego, że ma mniej opcji i copy=False
. array
ma domyślnie wartość copy=True
.
Główna różnica polega na tym, że array
(domyślnie) tworzy kopię obiektu, natomiast asarray
nie będzie konieczne, chyba że będzie to konieczne.
Różnice są dość wyraźnie wymienione w dokumentacji array
i asarray
. Różnice polegają na liście argumentów, a zatem działaniu funkcji w zależności od tych parametrów.
Definicje funkcji są:
numpy.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)
i
numpy.asarray(a, dtype=None, order=None)
następujące argumenty są te, które mogą być przekazywane do array
i nieasarray
jak wspomniano w dokumentacji:
kopia: bool, o ptional Jeśli true (domyślnie), to obiekt jest kopiowany. W przeciwnym razie kopia zostanie wykonana tylko wtedy, gdy
__array__
zwróci kopię, jeśli obj jest sekwencją zagnieżdżoną lub jeśli jest potrzebna kopia, aby spełnić którekolwiek z pozostałych wymagań (typ, kolejność itp.).subok: bool, opcjonalnie Jeśli prawda, następnie podklasy będzie przekazywana przez, w przeciwnym razie zwrócona tablica będzie musiał być baza klasy array (domyślnie).
ndmin: int, opcjonalny Określa minimalną liczbę wymiarów , która powinna mieć otrzymana tablica:. Zostaną one wstępnie dostosowane do kształtu zgodnie z potrzebami, aby spełnić to wymaganie.
Różnice te można wykazać w następującym przykładzie:
wygenerowania macierzy
>>> A = numpy.matrix(np.ones((3,3))) >>> A matrix([[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]])
użycia
numpy.array
modyfikacjiA
. Nie działa, ponieważ jesteś modyfikując kopię>>> numpy.array(A)[2]=2 >>> A matrix([[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]])
korzystanie
numpy.asarray
zmodyfikowaćA
.To zadziałało, ponieważ modyfikująA
sobie>>> numpy.asarray(A)[2]=2 >>> A matrix([[ 1., 1., 1.], [ 1., 1., 1.], [ 2., 2., 2.]])
nadzieję, że to pomaga!
Nareszcie ktoś daje przykład .. Dziękuję bardzo! – CapturedTree
- 1. ograniczające pole numpy array
- 2. Obliczyć obwód numpy array
- 3. Zero tablica numpy array
- 4. Numpy Array sumujący z wagami
- 5. bool array vs bit array w C
- 6. Czas pracy Array # unshift vs Array # shift
- 7. scala - array vs arrayseq
- 8. Vector vs Array Performance
- 9. Char Array VS Char *
- 10. shuffle vs permute numpy
- 11. numpy vstack vs. column_stack
- 12. Jak pomnożyć numpy tablicę 2D z numpy 1D array?
- 13. carving 2D numpy array według indeksu
- 14. python dict do numpy structured array
- 15. Porównywanie łańcucha 1-d numpy array elementwise
- 16. Numpy Array Broadcasting z różnymi wymiarami
- 17. Jak zaprezentować numpy array na powierzchni pygame?
- 18. Znormalizowanie kolumn numpy array w pythonie
- 19. Sparse vs Normal Array Matlab
- 20. PHP array vs PHP Constant?
- 21. Array vs listy w Elm
- 22. 2d array vs struktury tablicy
- 23. char array vs. wskaźnik char
- 24. numpy max vs Amax vs maksymalnej
- 25. NumPy vs. wieloprocesorowość i mmap
- 26. SciPy SVD vs. Numpy SVD
- 27. Numpy float64 vs Python float
- 28. Cython vs numpy wydajność skalowania
- 29. JavaScript Array Object vs Array Like Objects - Clarification
- 30. C++ array vs C# ptr speed confusion
Więc kiedy powinniśmy użyć każdego? Jeśli tworzysz tablicę od podstaw, co jest lepsze, 'tablica ([1, 2, 3])' lub 'asarray ([1, 2, 3])'? – endolith
@endolith: '[1, 2, 3]' jest listą Pythona, więc należy utworzyć kopię danych, aby utworzyć 'ndarary'. Więc użyj 'np.array' bezpośrednio zamiast' np.asarray', który wysłałby parametr 'copy = False' do' np.array'. 'Copy = False' jest ignorowane, jeśli kopia musi być wykonana tak jak w tym przypadku. Jeśli porównujesz te dwie wartości za pomocą '% timeit' w IPython, zobaczysz różnicę dla małych list, ale nie ma to większego znaczenia dla dużych list. – unutbu
Ma to sens również w przypadku nazw metod: "asarray": Traktuj to jako tablicę (inplace), tzn. Po prostu zmieniasz swój widok na tej liście/tablicy. "array": Właściwie przekonwertuj to do nowej tablicy. – denvar