当执行特定的切片时,numpy数组的形状会以一种比较意外的方式发生变化。
我尝试了几种不同的方式对同一个数组进行切片,但是细微的差别导致数组形状有所不同。
import numpy as np
z = np.zeros((1,9,10,2))
# This makes sense
print(z[...,[1,0]].shape)
# (1, 9, 10, 2)
print(z[0,...].shape)
# (9, 10, 2)
print(z[0:1,...,[1,0]].shape)
# (1, 9, 10, 2)
print(z[0][...,[1,0]].shape)
# (9, 10, 2)
# This doesn't, I would expect (9, 10, 2) in both cases
print(z[0,:,:,[1,0]].shape)
# (2, 9, 10)
print(z[0,...,[1,0]].shape)
# (2, 9, 10)
在最后两个示例中,我不明白为什么最后一个轴会移到第一位置。
我正在使用Python 3.6.4和numpy 1.15.1。