【问题标题】:Transforming a numpy matrix dataset转换一个 numpy 矩阵数据集
【发布时间】:2017-01-01 14:01:26
【问题描述】:

我在 python 中有一个 8 列的二维矩阵。 这 8 列包含两个不同实体的记录,例如 A 和 B,每个实体有 4 列。我的示例数据如下所示:

╔══════╦═════════╦══════╦═════════╗
║ A_ID ║ arrtibA ║ B_ID ║ attribB ║
╠══════╬═════════╬══════╬═════════╣
║    1 ║ val     ║    1 ║ val     ║
║    1 ║ val     ║    1 ║ val     ║
║    1 ║ val     ║    2 ║ val     ║
║    1 ║ val     ║    2 ║ val     ║
║    2 ║ val     ║    3 ║ val     ║
║    2 ║ val     ║    3 ║ val     ║
║    2 ║ val     ║    4 ║ val     ║
║    3 ║ val     ║    5 ║ val     ║
║    3 ║ val     ║    5 ║ val     ║
╚══════╩═════════╩══════╩═════════╝

我希望将其转换为这种形式:

╔══════╦═════════╦══════╦═════════╗
║ A_ID ║ arrtibA ║ B_ID ║ attribB ║
╠══════╬═════════╬══════╬═════════╣
║    1 ║ val     ║    1 ║ val     ║
║    1 ║ val     ║    1 ║ val     ║
║    2 ║ val     ║    2 ║ val     ║
║    2 ║ val     ║    2 ║ val     ║
║    3 ║ val     ║    3 ║ val     ║
╚══════╩═════════╩══════╩═════════╝

简单来说,就是根据实体 A 和实体 B 各自的 ID 来对齐它们的属性。没有找到匹配的行可以被丢弃。我有大约 28,000 多行,其中 A_ID 的范围从 17 到 230,B_ID 的范围从 17 到 305。但是一旦完成对齐,两个实体的 ID 低于 231 的行将在彼此前面对齐,然后休息从实体 B 的 231 到 305 被丢弃。

【问题讨论】:

  • 你在混用术语。 pandas 有数据框。 Numpy 只有数组。我建议一个 MCV 示例

标签: python numpy matrix


【解决方案1】:

你可以试试:

data = np.delete(data, np.where(data[:,0]!=data[:,2])[0], 0)

【讨论】:

  • 好吧,在给定示例的情况下,将仅保留前 2 行,并删除其余行。我需要对齐它们
  • 好吧,我可能没有完全理解您的问题,您所说的“根据各自的 ID 对齐实体 A 和实体 B 的属性”是什么意思?在您的示例中,您有 4 行 A_ID == 1 和 2 行 B_ID == 1,因此,您只想保留 A_ID == 1 的前 2 行,删除第 1 列和第 2d 列中的 2 个条目,例如单元格 (3,4) 和 (4,4) (所以 cols 1 和 2 '向上滑动')并在 ID == 2, 3, 4... 上重复?
  • 是的,差不多就是这样。只有 A_ID == 1 的两个条目将被删除,A_ID == 2 的较低值将“向上滑动”,在 B_ID == 2 的条目前面,依此类推,3、4、5...
  • 到目前为止,我已经将数据集划分为实体 A 和 B 的行的单独列。因此,根据示例,如果我有 4 列,现在,我有 2 个矩阵每列 2 列。
猜你喜欢
  • 1970-01-01
  • 2019-12-12
  • 1970-01-01
  • 2021-07-22
  • 1970-01-01
  • 1970-01-01
  • 2016-02-01
  • 2013-06-30
相关资源
最近更新 更多