2009-06-03 35 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

相關問題