【发布时间】:2010-11-27 08:33:14
【问题描述】:
这让我摸不着头脑。我无意中用 None 对数组进行切片,得到的不是错误(我预计会出现错误)。相反,它返回一个具有额外维度的数组。
>>> import numpy
>>> a = numpy.arange(4).reshape(2,2)
>>> a
array([[0, 1],
[2, 3]])
>>> a[None]
array([[[0, 1],
[2, 3]]])
这种行为是故意的还是副作用?如果是故意的,有什么理由吗?
【问题讨论】:
-
有点相关,当我需要将某些内容传递给切片但不想添加额外的维度时,我使用了 slice(None)。
-
a[None]等价于a[None, :, :]或a[None, ...]。与其他索引表达式一样,根据需要添加尾随切片。因此,None本身在开始时添加了一个新轴。a[...,None]在末尾添加新轴。