【发布时间】:2018-07-23 12:46:36
【问题描述】:
我有一个存储位置数据的数据框,如下所示:
r1_x r1_y r1_z r2_x r2_y r2_z
0 17.670965 19.857307 27.178185 17.555960 20.653801 27.641266
1 17.670965 19.857307 27.178185 16.950911 4.216056 12.901429
2 17.670965 19.857307 27.178185 11.737829 26.097181 3.230895
3 17.670965 19.857307 27.178185 16.254911 12.062716 12.170364
4 17.670965 19.857307 27.178185 16.504757 11.673612 12.406663
5 17.670965 19.857307 27.178185 16.717722 27.935490 28.795826
这里的 x、y 和 z 表示 3d 向量的分量。在这样的数据框元素上执行向量操作的最佳方法是什么?例如,如果我想计算每一行的 r2-r1,或者取一个点积怎么办?我正在使用 pandas 来存储这些数据。
【问题讨论】:
-
如果你想要
r1_x-r2_x就做df.r1_x - df.r2_x -
如果我不清楚,我很抱歉,我知道如何对每一列进行操作。我的问题是如何将 3 列 x、y 和 z 组合成每行的 numpy 数组,以便我可以执行 np.dot(r1, r2) 之类的操作
-
我正在寻找一种比操纵这些向量的每个分量更有效的方法。
-
定义
efficient?你想要更多的性能,是吗?还是更好的代码?因为它不会比(df.r1_x * df.r2_x) + (df.r1_y * df.r2_y) + (df.r1_z * df.r2_z)快多少