W numpy można użyć obiektu `` newaxis '' w składni wycinania, aby utworzyć oś długości jeden, np:
import numpy as np
print np.zeros((3,5))[:,np.newaxis,:].shape
# shape will be (3,1,5)
Te stany dokumentacji , które można również stosować None
zamiast newaxis
, efekt jest dokładnie taki sam.
Czy jest jakiś powód, by wybierać jedną z nich? Czy są jakieś ogólne preferencje lub przewodnik po stylu? Mam wrażenie, że newaxis
jest bardziej popularny, prawdopodobnie dlatego, że jest bardziej dosadny. Czy jest więc jakiś powód, dla którego None
jest to dozwolone?
None
jest lepsza, jest optymalizacja szybkości wykonywania, która może przynieść bardzo niewielką korzyść czasową. Ale zwykle wolisznp.newaxis
.newaxis = object()
(lub odpowiednika na poziomie C), jest poza mną ... używanieNone
jest dość podatne na błędy. Miałem funkcję z błędem (nagą,return
która miała zwrócić tablicę logiczną) i zacząłem otrzymywać błędy z powodu niedopasowania kształtu. Zajęło mi trochę czasu, zanim zdałem sobie sprawę, że indeksowanie za pomocąNone
nie po prostu podnosiIndexError
. Gdyby użyli „świeżej” wartości wartowniczej, uniknąłbym 30 minut próby zrozumienia błędu ...