【问题标题】:Reshaping array of matrices in Python在 Python 中重塑矩阵数组
【发布时间】:2017-05-13 22:20:07
【问题描述】:

我有一个 n 2x2 矩阵的 Numpy 数组 X,排列成 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。)

【问题讨论】:

  • Y = X.transpose(2,0,1) 我猜。

标签: python numpy matrix


【解决方案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.rollaxismoveaxis 的旧版本,调用更混乱约定。

【讨论】:

    【解决方案2】:

    使用swapaxis:

    Y = X.swapaxes(0,2)
    

    【讨论】:

      猜你喜欢
      • 2020-10-25
      • 2017-05-29
      • 2023-01-25
      • 1970-01-01
      • 1970-01-01
      • 2020-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多