numpy数组索引器中的冒号,无,切片(无)

时间:2016-07-05 16:32:00

标签: python numpy indexing

至于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]])

可以解释后者吗?

2 个答案:

答案 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]])