【发布时间】:2019-10-11 10:41:57
【问题描述】:
当以某种意想不到的方式执行特定切片时,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
【问题讨论】:
-
这是一个混合基本索引和高级索引的情况(请参阅索引文档页面)。当切片(或省略号)位于其他索引的中间时,它会移动到结果的末尾。也有重复的 SO。您已经找到了解决方法。
标签: python numpy numpy-ndarray