使用None切片NumPy数组

84 投票
1 回答
26124 浏览
提问于 2025-04-15 14:14

这让我想了很久。我无意中用 None 来切片一个数组,结果得到了一个我没想到的结果(我本以为会出错)。相反,它返回了一个多了一维的数组。

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

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

1 个回答

85

使用 None 和使用 numpy.newaxis 是一样的,所以这确实是故意的。实际上,它们是同一个东西,不过 newaxis 这个名字更清楚明了。

文档说明

newaxis 对象可以在所有切片操作中使用,用来创建一个长度为一的轴。newaxis 是 ‘None’ 的别名,而 ‘None’ 可以用来代替它,效果是一样的。

相关的 SO 问题

撰写回答