带有numpy数组对象和数据帧的矩阵乘法

时间:2020-06-10 16:02:56

标签: pandas numpy matrix

我使用for循环进行了此操作,感觉有一种更快的方法可以实现它,但是我却难以理解。

datal=[[-9.8839112e-05, -0.001128727317, -0.000197679149],
 [-0.0009201639200000001, 0.0005601014289999999, 0.000496686232],
 [-0.000184700668, 9.414391600000001e-05, 0.000409526574]]

bigtranfo=[array([[ 0.89442732,  0.        ,  0.44721334],
        [ 0.44721334,  0.        , -0.89442732],
        [-0.        ,  1.        ,  0.        ]]),
 array([[ 0.27639329,  0.85065091,  0.44721334],
        [ 0.13819655,  0.42532516, -0.89442732],
        [-0.9510565 ,  0.30901705,  0.        ]]),
 array([[-0.72360684,  0.52573128,  0.44721334],
        [-0.36180316,  0.26286545, -0.89442732],
        [-0.58778535, -0.80901692,  0.        ]])]

vectorfield=[]
    for i in range(0,3):
        x=list(bigtransfo[i].dot(datal[['tx','ty','tz']].iloc[i]))
        vectorfield.append(x)
    vf=pd.DataFrame(vectorfield,columns=['tx','ty','tz'])

输出: [[-0.00017680915486414586, 0.00013260746120237444, -0.001128727317], [0.00044424836491567196, -0.0003331879850180065, 0.0010482087675674915], [0.000366290815094829, -0.00027471928608663234, 3.240032593749042e-05]]

bigtransfo是一个包含800个3x3数组,转换的对象。 datal只是具有800行三列的数据帧的一部分。想法是将每行的三个分量(选定的向量)乘以相应的变换。

任何想法都欢迎。预先感谢。

更新:添加了工作示例。

0 个答案:

没有答案