【问题标题】:How to efficiently operate on sub-arrays like calculating the determinants, inverse,如何有效地对子数组进行操作,例如计算行列式,逆,
【发布时间】:2019-12-01 06:07:24
【问题描述】:

我必须对子数组进行多项操作,例如矩阵求逆或构建行列式。由于 Python 中的 for 循环不是很快,我想知道最好的方法是什么。

import numpy as np
n = 8
a = np.random.rand(3,3,n)
b = np.empty(n)
c = np.zeros_like(a)

for i in range(n):
    b[i] = np.linalg.det(a[:,:,i])
    c[:,:,i] = np.linalg.inv(a[:,:,i])

【问题讨论】:

    标签: python function numpy sub-array


    【解决方案1】:

    那些numpy.linalg 函数将接受n-dim 数组,只要最后两个轴是构成2D 切片的轴,函数将沿着这些轴进行操作。因此,为了解决我们的情况,置换轴以将迭代轴作为第一个轴,执行所需的操作,如果需要,将该轴推回原来的位置。

    因此,我们可以像这样得到这些输出 -

    b = np.linalg.det(np.moveaxis(a,2,0))
    c = np.moveaxis(np.linalg.inv(np.moveaxis(a,2,0)),0,2)
    

    【讨论】:

    • 非常感谢!你的解决方案比我的快大约 100 倍 =)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 2021-05-08
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多