首页 > 解决方案 > 与 numpy 数组对象和数据框的矩阵乘法

问题描述

我使用 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 行和 3 列的数据框的一部分。这个想法是将每一行的三个分量,即所选向量,乘以相应的变换。

欢迎任何想法。提前致谢。

更新:添加了工作示例。

标签: pandasnumpymatrix

解决方案


推荐阅读