即使这个问题非常简单,我还是非常困惑地与这个问题作斗争:
我有一个numpy数组a
,其中a.shape == (16,4,1000,60)
我真的不喜欢a[:,:,:,5] == x
我想删除所有上述内容,以生成b
,其中b.shape == (16,4,k,60)
,其中k
是未知但恒定的数字。
a[0,0,:,5] == x
所在的索引不一定与a[0,1,:,5] == x
所在的索引相同,但始终有k
个索引。
有什么想法吗?谢谢!
编辑: 我刚刚发现,如果这样做:
b = a[a[:,:,:,5] == x]
k = b.size / (16*4*60)
b = b.reshape([16,4,k,60])
b.shape # e.g. (16,4,3,60)
它可以工作,但这似乎不是一个很好的解决方案。有没有办法明确保留尺寸?
答案 0 :(得分:0)
执行b = b.reshape([16,4,k,60])
而不是b = b.reshape((16,4,-1,60))
。 numpy
会为您找出隐含的维度。
一个且仅一个形状尺寸可以为-1。在这种情况下,该值是根据数组的总大小和其他维度来推断的。