【问题标题】:Best way to manipulate array data in data frame? [duplicate]在数据框中操作数组数据的最佳方法? [复制]
【发布时间】: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) 快多少

标签: python pandas dataframe


【解决方案1】:

试试这个

df['r2_x-r1_x'] = df.r2_x - df.r1_x

【讨论】:

  • 它在您发布答案的同时被标记为重复。另外为了帮助未来的用户,你应该解释你的代码。
猜你喜欢
  • 1970-01-01
  • 2019-09-24
  • 1970-01-01
  • 1970-01-01
  • 2021-07-04
  • 2020-05-29
  • 2017-03-31
  • 2021-06-16
  • 2021-12-22
相关资源
最近更新 更多