Numpy:我该用 newaxis 还是 None?
在numpy中,你可以使用'newaxis'这个东西来在切片的时候创建一个长度为1的轴,比如:
import numpy as np
print np.zeros((3,5))[:,np.newaxis,:].shape
# shape will be (3,1,5)
文档中提到,你也可以用None
来代替newaxis
,效果是完全一样的。
那么,有没有什么理由让我们选择其中一个呢?有没有什么通用的偏好或者风格指南?我觉得newaxis
可能更受欢迎,因为它更明确。那么,为什么None
也可以用呢?
1 个回答
120
None
是可以使用的,因为 numpy.newaxis
其实就是 None
的一个别名。
In [1]: import numpy
In [2]: numpy.newaxis is None
Out[2]: True
作者可能选择这个名字是因为他们需要一个方便的常量,而 None
正好可以用。
至于为什么你应该更喜欢 newaxis
而不是 None
:主要是因为 newaxis
更清楚明了,另外也有可能将来 numpy
的作者会把它改成其他的东西,而不是 None
。(他们现在并没有计划这样做,也可能不会,但其实没有什么理由非得用 None
。)