gpt4 book ai didi

python - 获取许多一维数组的特征值的最快方法

转载 作者:太空宇宙 更新时间:2023-11-03 15:42:11 25 4
gpt4 key购买 nike

我有一个 (n, m, 6) 数组,其中 n 和 m 大于 10.000。这 6 个值按以下顺序来自对称矩阵:

[[11, 12, 13], [12, 22, 23], [13, 23, 33]] => (11, 22, 33, 12, 23, 31)

我想计算每个矩阵的特征值和特征向量。现在它是通过 2 个 for 循环迭代每个维度、将值重新排序为矩阵形式并计算特征值来实现的。但我想知道使用矢量化是否有更快的解决方案?

最佳答案

我发现的最佳方法是使用 (6,3,3) 变换矩阵将对称值转换为适当的对称张量。

transf = np.array([[[1.,0.,0.],[0.,0.,0.],[0.,0.,0.]],                #11
[[0.,0.,0.],[0.,1.,0.],[0.,0.,0.]], #22
[[0.,0.,0.],[0.,0.,0.],[0.,0.,1.]], #33
[[0.,1.,0.],[1.,0.,0.],[0.,0.,0.]], #12 & 21
[[0.,0.,1.],[0.,0.,0.],[1.,0.,0.]], #13 & 31
[[0.,0.,0.],[0.,0.,1.],[0.,1.,0.]]]).swapaxes(0,1) #23 & 32

e, v = np.linalg.eigh(input.dot(transf))

非编程注意事项:注意 abaqus 输出的是真实应力/应变还是工程应力/应变,因为生成的变换是不同的(如果我没记错的话,对于“真实应变”你需要非对角线项为 0.5 而不是 1.)

关于python - 获取许多一维数组的特征值的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51984056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com