numpy 给定一个N维数组,求锁定(N-1)维并留下一个自由维的子数组的所有组合

ovfsdjhp  于 2023-03-02  发布在  其他
关注(0)|答案(1)|浏览(121)

假设我们有一个形状数组(10,20,30)。
我想得到的是所有:
1.形状(10)的20 × 30阵列,
1.形状(20)的10 × 30阵列,

  1. 10*20形状阵列(30)。
    手动锁定除一个维度之外的所有维度是很容易的,但是我很难编写一个有效的循环来迭代这种方式,原因是在我的应用程序中,我将有几个维度,它们在2到5之间变化,我将需要获得锁定除一个维度之外的所有维度的所有子数组。
    我想我可以使用转置和滚动来创建一个滚动的索引,例如
data = np.zeros((10, 20, 30))
for ndim in range(len(data.shape)):
   index = np.arange(0, len(data.shape)), 1)
   index = np.roll(index, 1)
   _data = np.transpose(data, index)[0]

......然后我意识到这是无用的,因为它与我所需要的相反。
说到这里我都试着问chatgpt了。所以是时候求助了。我完全卡住了

qf9go6mv

qf9go6mv1#

我不太清楚你到底要什么,也许是这样的?

for i in range(data.ndim):
    data2 = np.moveaxis(data, i, 0)
    for index in np.ndindex(data2.shape[1:]):
        print(data2[..., index])

此代码将data中的每个轴移动到第一个轴,然后在其余两个维度上循环。

相关问题