我有X
个2x2矩阵的Numpy数组n
,排列为X.shape = (2,2,n)
,即得到我称之为X[:,:,0]
的第一个矩阵。我想将X
重新整形为数组Y
,这样我就可以通过调用Y[0]
等来获取第一个矩阵,但执行X.reshape(n,2,2)
会使矩阵混乱。如何在重塑数组时保留矩阵?
我基本上是想这样做:
import numpy as np
Y = np.zeros([n,2,2])
for i in range(n):
Y[i] = X[:,:,i]
但不使用for循环。如何使用reshape
或类似函数执行此操作?
(要获取示例数组X
,请针对某些X = np.concatenate([np.identity(2)[:,:,None]] * n, axis=2)
尝试n
。)
答案 0 :(得分:1)
numpy.moveaxis
可用于获取一个数组的视图,其中一个轴移动到形状中的不同位置:
numpy.moveaxis(X, 2, 0)
numpy.moveaxis(a, source, destination)
获取数组a
的视图,其中最初位于source
位置的轴最终位于destination
位置,因此numpy.moveaxis(X, 2, 0)
使原始轴2成为原点视图中的新轴0。
还有numpy.transpose
,如果您将可选的第二个参数和numpy.rollaxis
传递给它,它可用于一次性执行数组轴的任意重新排列,较早版本的moveaxis
,其调用惯例更加混乱。
答案 1 :(得分:0)
使用swapaxis
:
Y = X.swapaxes(0,2)