在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允许这样做?
Answers:
None之所以被允许,numpy.newaxis是因为它仅仅是的别名None。
In [1]: import numpy
In [2]: numpy.newaxis is None
Out[2]: True
作者之所以选择它,是因为他们需要一个方便的常量并且None可用。
至于为什么你应该更喜欢newaxis过None:主要是因为它更明确,部分是因为某一天的numpy作者可能将其更改为比其他的东西None。(他们没有计划也可能没有计划,但是没有充分的理由选择None。)
None优化执行速度是一个更好的地方,它可以带来很小的时间收益。但是通常您应该更喜欢np.newaxis。
newaxis = object()(或C级等效标准),这超出了我的范围...使用None非常容易出错。我有一个带有错误的函数(return应该返回一个布尔数组的裸露错误),并且由于形状不匹配而开始出现错误。让我花了一会儿时间才意识到用进行索引None并不会简单地引发一个IndexError。如果他们使用了“新鲜的”前哨值,我会避免尝试