一句话总结: …代替了切片操作中前面所有的:, 即a[:, :, None] 和a[…, None]等价
这里主要涉及python和numpy的切片操作。
下面以二维切片为例:
import numpy as np
a = np.arange(25).reshape((5, 5))
print(a)
print(a[1:3, 2:5])
‘’’
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]]
[[ 7 8 9]
[12 13 14]]
‘’’
print(a[:, 2:5])
‘’’
[[ 2 3 4]
[ 7 8 9]
[12 13 14]
[17 18 19]
[22 23 24]]
‘’’
print(a[:, 2:5, None])
‘’’
[[[ 2]
[ 3]
[ 4]]
[[ 7]
[ 8]
[ 9]]
[[12]
[13]
[14]]
[[17]
[18]
[19]]
[[22]
[23]
[24]]]
‘’’
多维切片是按照各个维度进行切片操作的。此处分别取第一维的2-3,第二维的3-5,即7 8 9 12 13 14. 从一开始计数
None代表新增加一个维度。print(a[:, 2:5, None])在第三个维度上用了None,所以成为5x3x1. 如果用在第二个维度,即如下图所示:
print(a[:, None, 2:5])
关于三个点的解释
a[:,:,None] 和a[…, None]等价
…代替了前面的两个: