Numpy:Должен ли я использовать newaxis или нет?
Вопрос
В numpy можно использовать объект 'newaxis' в синтаксисе среза для создания оси длиной один, например:
import numpy as np
print np.zeros((3,5))[:,np.newaxis,:].shape
# shape will be (3,1,5)
В в документации говорится это также можно использовать None
вместо того , чтобы newaxis
, эффект точно такой же.
Есть ли какая-то причина предпочесть одно другому?Есть ли какие-то общие предпочтения или руководство по стилю?У меня сложилось впечатление, что newaxis
является более популярным, вероятно, потому, что он более явный.Итак, есть ли какая-то причина, почему None
разрешено ли это?
Решение
None
разрешено, потому что numpy.newaxis
является просто псевдонимом для None
.
In [1]: import numpy
In [2]: numpy.newaxis is None
Out[2]: True
Авторы, вероятно, выбрали его, потому что им нужна была удобная константа, и None
был доступен.
Что касается того, почему вы должны предпочесть newaxis
закончился None
:главным образом потому, что это более откровенно, и отчасти потому, что когда-нибудь numpy
авторы могли бы изменить его на что-то другое, чем None
.(Они не планируют этого делать и, вероятно, не будут, но нет веских причин предпочесть None
.)