gpt4 book ai didi

python - 以特定方式重新排列 3D numpy 数组

转载 作者:行者123 更新时间:2023-12-01 03:50:37 25 4
gpt4 key购买 nike

我正在 numpy 中处理 3D 矩阵。我实际上是使用 ctypes 将这些矩阵传递给 C 来执行一些计算,然后返回结果。现在的问题是,我的结果是正确的(我在纸上进行了数学计算来验证),但它只是不是我想要的形式。

这是一个例子。我有一个以下形式的 3D 数组:

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],
[24, 25, 26]]])

我需要将其转换为一种形式,其中所有二维子矩阵的第 i 列形成一个新的二维子矩阵,如下所示:

array([[[ 0, 9,  18],
[ 3, 12, 21],
[ 6, 15, 24]],

[[ 1, 10, 19],
[ 4, 13, 22],
[ 7, 16, 25]],

[[2, 11, 20],
[5, 14, 23],
[8, 17, 26]]])

我尝试过使用np.rot90np.flipudnp.fliplr的各种组合,但均无济于事。对此的任何帮助将不胜感激。

非常感谢!

最佳答案

您想要的输出是轴顺序相反的初始数组。这就是 NumPy 将转置推广到任意维数组的方式,因此您可以使用 T 属性来实现此目的:

In [3]: x
Out[3]:
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],
[24, 25, 26]]])

In [4]: x.T
Out[4]:
array([[[ 0, 9, 18],
[ 3, 12, 21],
[ 6, 15, 24]],

[[ 1, 10, 19],
[ 4, 13, 22],
[ 7, 16, 25]],

[[ 2, 11, 20],
[ 5, 14, 23],
[ 8, 17, 26]]])

关于python - 以特定方式重新排列 3D numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38316752/

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