对存储在 n 维 numpy 数组中的所有矩阵进行批量操作

Dan*_*Dan 4 python numpy

我有一个大小为 (4, 4, 6890) 的 numpy 数组,它基本上存储了 6890 个 4x4 矩阵。我需要反转所有这些,我目前正在循环执行,我知道这是一种不好的做法

for i in range(0, T.shape[2]):
    T_inv[:,:,i] = np.linalg.inv(T[:,:,i])
Run Code Online (Sandbox Code Playgroud)

我怎样才能通过一个电话做到这一点?

Dan*_*l F 5

np.linalg.inv 会这样做,但您需要重新排列轴:

 T_inv = np.moveaxis(np.linalg.inv(np.moveaxis(T, -1, 0)), 0, -1)
Run Code Online (Sandbox Code Playgroud)

可能更好地构建T这样T.shape = (68690, 4, 4). 它也将有助于广播。