Python 有效地将numpy数组从(a,b,c)重新整形/排序为(a,c,b)

Python 有效地将numpy数组从(a,b,c)重新整形/排序为(a,c,b),python,arrays,numpy,Python,Arrays,Numpy,我有几种形状的Numpy 3D阵列(a,b,c)。a、b和c的值未知。但是,我想以一种有效的方式将每个数组重塑为(a,c,b) 以下是我正在做的: 对于\u数组列表中的数组: a、 b,c=array.shape 数组=数组。重塑(a、c、b) 有没有更有效的方法来实现这一点,可能是在一行代码中?我是否可以使用-1索引方法来重塑/重新排列阵列 多谢各位 import numpy as np # Example array with shape (2, 4, 6) array = np

我有几种形状的Numpy 3D阵列(
a
b
c
)。
a
b
c
的值未知。但是,我想以一种有效的方式将每个数组重塑为(
a
c
b

以下是我正在做的:

对于\u数组列表中的数组:
a、 b,c=array.shape
数组=数组。重塑(a、c、b)
有没有更有效的方法来实现这一点,可能是在一行代码中?我是否可以使用
-1
索引方法来重塑/重新排列阵列

多谢各位

import numpy as np

# Example array with shape (2, 4, 6)    
array = np.arange(48).reshape((2, 4, 6))

# Swap axis in the 1st and 2nd dimension and print out its shape     
np.swapaxis(array, 1, 2).shape
输出:

(2, 6, 4)
输出:

(2, 6, 4)

可能是
np.transpose
?它将所有尺寸交换到指定的顺序

x = np.random.randint(0, 256, (100, 80, 3))

np.transpose(x, (1, 0, 2))

可能是
np.transpose
?它将所有尺寸交换到指定的顺序

x = np.random.randint(0, 256, (100, 80, 3))

np.transpose(x, (1, 0, 2))

我不明白你想在哪里提高效率
array.shape
并不慢,那么将其更改为一行代码做什么呢?您可以使用
np.moveaxis
np.swapaxis
,但这不会使代码更快。为什么有一个数组列表而不是一个可以同时操作的大型数组?每个3D数组都不同,应该独立操作。因此,我将它们存储为一个列表,而不是一个大的4D数组。我不明白您想在哪里提高效率
array.shape
并不慢,那么将其更改为一行代码做什么呢?您可以使用
np.moveaxis
np.swapaxis
,但这不会使代码更快。为什么有一个数组列表而不是一个可以同时操作的大型数组?每个3D数组都不同,应该独立操作。因此,我将它们存储为一个列表,而不是一个大的4D数组。谢谢!我可以在列表中转置每个数组。是的,或者使用
map()
函数。您考虑过接受答案吗?让我们知道我们是否可以改进我们的答案。谢谢!我可以在列表中转置每个数组。是的,或者使用
map()
函数。您考虑过接受答案吗?让我们知道我们是否可以改进我们的答案。