我有一个单元数据F,它是一个3x3矩阵的数组。如何计算sqrt(F * F.T矩阵的特征值),然后追加这个新的细胞数据?
更新1:这是我的代码。由于行
,它不起作用composer install
我该如何解决呢?
C = F.Arrays[0] * F.Arrays[0].T
答案 0 :(得分:2)
我找到了一种方法:
import numpy as np
import vtk
from vtk.numpy_interface import dataset_adapter as da
from vtk.numpy_interface.algorithms import sqrt as sqrt
from vtk.numpy_interface.algorithms import eigenvalue as eigenvalue
from numpy import linalg as LA
F = inputs[0].GetBlock(0).GetCellData().GetArray('F')
arr = []
for j in range(0, F.GetNumberOfTuples()) :
f = F.GetTuple(j)
f = np.reshape(f, (3,3))
f = f.T*f
lmbda = np.sqrt(LA.eigvals(f))
arr.append(lmbda)
vtk_arr = da.VTKArray(arr)
output.CellData.append(vtk_arr,"Lambdas")