pandas - 与 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 列的数据框的一部分。这个想法是将每一行的三个分量,即所选向量,乘以相应的变换。
欢迎任何想法。提前致谢。
更新:添加了工作示例。
解决方案
推荐阅读
- linux - aarch64 Linux 硬浮点或软浮点
- python - 使用 XArray 数据集重现 Holoviews 示例 box_draw_roi_editor
- java - 是否有任何查询来查找 Firebase 数据库(Android Studio)中同名的孩子的数量总和?
- javascript - 有没有办法在 javascript 的 get 方法中请求多个 url?
- postgresql - 容器是数据库服务器。容器启动后,如何要求它的 Dockerfile 完成构建?
- go - 如何在 Go 中为外部 HTML 模板设置变量?
- c++ - 程序员定义的异常类问题
- kentico - Kentico - 无法以“DD/MM/YYYY”格式保存日期时间
- python - 如何仅从新列表中删除元素
- python-3.x - 如何通过groupby一天数据计算列中的值从任意数字变为10时