我对以下情况感到困惑:
x = np.random.rand(1, 32, 3, 64);
print(x.shape)
#(1, 32, 3, 64)
然后我应用此选择。
y = x[np.arange(1)[:, None], :, 1, np.arange(64)[None, :]]
我认为我选择了维度0、1、3的所有行,第二维度的1应该是例外..但是它给出了
print(y.shape)
#(1, 64, 32)
对于以下情况:
y = x[np.arange(1)[:, None], :, [1], np.arange(64)[None, :]]
我认为我选择了0、1维的所有行,并且始终使用2维的第一行。
print(y.shape)
#(1, 64, 32)
为什么在两种情况下形状都变为(1、64、32)?
1和[1]有什么区别?
答案 0 :(得分:0)
您可能会为您要实现的目标提供更多的背景信息吗?您使用np.arange(1)[:, None]
而不只是:
进行索引是有特定原因吗?例如是y = x[:,:,1,:]
形状:(1,32,64)不是您要的内容?
1索引与[1]索引之间的差异似乎可以作为高级索引:https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#advanced-indexing