至于a = np.arange(24).reshape(2,3,4)
a[0,:,1]
或a[0,slice(None),1]
输出array([1, 5, 9])
a[0,None,1]
给出array([[4, 5, 6, 7]])
可以解释后者吗?
答案 0 :(得分:9)
使用原始None
(不在slice
中)与使用np.newaxis
相同,但它只是别名。
在你的情况下:
a[0,None,1]
就像[0,np.newaxis,1]
,因此输出slice(None)
就像“没有切片”,这就是a[0,:,1]
与a[0,slice(None),1]
相同的原因。请参阅numpy的Indexing文档。 答案 1 :(得分:2)
a[0,None,1]
与a[0, 1]
相同,但结果中包含额外轴。
可以在所有切片操作中使用
newaxis
对象来创建 长度为1的轴。:const: newaxis
是‘None’
的别名,‘None’
可以用相同的结果代替这个。
因此a[0,None,1]
与a[0,np.newaxis,1]
在这种情况下,放置None
的位置不相关,但每None
添加一个新轴。
>>> a[0,None, 1]
array([[4, 5, 6, 7]])
>>> a[None,None,0,1]
array([[[4, 5, 6, 7]]])
>>> a[0,np.newaxis,1]
array([[4, 5, 6, 7]])