70

这让我摸不着头脑。我无意中用 None 对数组进行切片,得到的不是错误(我预计会出错)。相反,它返回一个具有额外维度的数组。

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

这种行为是故意的还是副作用?如果是故意的,有什么理由吗?

4

1 回答 1

67

使用 None 等同于 using numpy.newaxis,所以是的,这是故意的。事实上,它们是相同的东西,但是,当然,newaxis更好地说明它。

文档

newaxis 对象可用于所有切片操作以创建长度为 1 的轴。newaxis 是“None”的别名,可以使用“None”代替它,结果相同。

一个相关的 SO question

于 2009-09-11T00:29:39.797 回答