Python 有效地将numpy数组从(a,b,c)重新整形/排序为(a,c,b)
我有几种形状的Numpy 3D阵列(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
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()
函数。您考虑过接受答案吗?让我们知道我们是否可以改进我们的答案。