使用 Nothing 的 NumPy 数组切片

这让我挠了一会儿头。我无意中使用 Nothing 切片了一个数组,并得到了一个错误以外的结果(我预计会出现错误)。相反,它返回一个带有额外维度的数组。

>>> import numpy
>>> a = numpy.arange(4).reshape(2,2)
>>> a
array([[0, 1],
[2, 3]])
>>> a[None]
array([[[0, 1],
[2, 3]]])

这种行为是故意的还是副作用? 如果是故意的,是否有一些合理的解释?

21030 次浏览

使用 Nothing 等同于使用 numpy.newaxis,所以是的,它是有意的。事实上,它们是一样的,但是,当然,newaxis更好地拼写它。

文件 :

Newwaxis 对象可以在所有切片操作中使用,以创建一个长度为1的轴。Newaxis 是“ None”的别名,可以使用“ None”代替它,得到相同的结果。

一个相关的 SO 问题。