2009-06-03 140 views
73

在numpy的一个可以使用“newaxis”对象在切片语法来创建长度之一的轴,例如:Numpy:我应该使用newaxis还是None?

import numpy as np 
print np.zeros((3,5))[:,np.newaxis,:].shape 
# shape will be (3,1,5) 

documentation states一个还可以使用的None代替newaxis,其效果是完全相同。

是否有任何理由选择其中之一?有没有一般的偏好或风格指南?我的印象是,newaxis更受欢迎,可能是因为它更明确。那么有什么理由让None被允许?

回答

84

None被允许的,因为numpy.newaxis仅仅是None的别名。

In [1]: import numpy 

In [2]: numpy.newaxis is None 
Out[2]: True 

作者可能选择它是因为他们需要一个方便的常量,None是可用的。

至于为什么你应该更喜欢newaxis超过None:主要是因为它更明确,部分是因为哪天numpy作者可能将其更改为比None其他的东西。 (他们不打算,也可能不会,但没有理由更喜欢None。)

+0

谢谢,我没有注意到,np.newaxis实际上是无。然后我会选择newaxis。 – nikow 2009-06-03 17:22:47

+4

他们实际上说你可以使用None,所以他们现在不能改变它:“newaxis对象可以用在上面讨论的基本切片语法中,也可以使用None来代替newaxis。” – endolith 2012-06-05 20:37:52

+2

没有更短:) – David 2015-07-16 04:12:39