按最终维度筛选 NumPy 数组,仅折叠倒数第二个维度



我对这个问题感到非常困惑,尽管它非常简单:

我有一个 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)

它有效,但这似乎不是一个很好的解决方案。有没有办法明确保留维度?

而不是b = b.reshape([16,4,k,60])只是做一个b = b.reshape((16,4,-1,60))numpy会为您找出隐含的维度。

一个且只能有一个形状维度为 -1。在这种情况下,该值是从数组的总大小和其他维度推断出来的。

最新更新