gpt4 book ai didi

numpy - 将数组的最后一维拆分为低维数组

转载 作者:行者123 更新时间:2023-12-01 10:42:27 25 4
gpt4 key购买 nike

假设我们有一个数组 NxMxD形状。我想得到一个列表 D NxM数组。

正确的做法是:

np.dsplit(myarray, D)

但是,这会返回 D NxMx1数组。

我可以通过执行以下操作来达到预期的结果:
[myarray[..., i] for i in range(D)]

或者:
[np.squeeze(subarray) for subarray in np.dsplit(myarray, D)]

但是,我觉得需要执行额外的操作有点多余。我有没有遗漏 numpy返回所需结果的函数?

最佳答案

试试 D.swapaxes(1,2).swapaxes(1,0)

>>>import numpy as np
>>>a = np.arange(24).reshape(2,3,4)
>>>a
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],

[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])

>>>[a[:,:,i] for i in range(4)]
[array([[ 0, 4, 8],
[12, 16, 20]]),
array([[ 1, 5, 9],
[13, 17, 21]]),
array([[ 2, 6, 10],
[14, 18, 22]]),
array([[ 3, 7, 11],
[15, 19, 23]])]

>>>a.swapaxes(1,2).swapaxes(1,0)
array([[[ 0, 4, 8],
[12, 16, 20]],

[[ 1, 5, 9],
[13, 17, 21]],

[[ 2, 6, 10],
[14, 18, 22]],

[[ 3, 7, 11],
[15, 19, 23]]])

编辑:正如ajcr所指出的(再次感谢), transpose命令更方便,因为可以通过使用一步完成两次交换
D.transpose(2,0,1)

关于numpy - 将数组的最后一维拆分为低维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28989812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com