Numpy:我该用 newaxis 还是 None?

104 投票
1 回答
30332 浏览
提问于 2025-04-15 12:01

在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。)

撰写回答