使用None的NumPy数组切片

Pau*_*aul 39 python arrays numpy

这让我抓了一会儿.我无意中使用None切片数组并获得错误以外的其他内容(我预计会出错).相反,它返回一个具有额外维度的数组.

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

这种行为是故意还是副作用?如果有意,是否有一些理由呢?

tom*_*m10 41

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

文档:

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

一个相关的SO问题.

  • 这是故意的,但符合逻辑吗?我期望 `array[None] == array` 因为我将其读为“没有应用掩码”。使用“array.add_axis()”或“array = np.add_axis(array)”之类的东西也会比“array = array[None]”更明确。 (2认同)