【问题标题】:merge columns in numpy matrix合并numpy矩阵中的列
【发布时间】:2021-11-20 14:18:16
【问题描述】:

我有一个像这样的 NumPy 矩阵(它可能有几列,这只是一个例子:

array([[nan, nan],
       [nan, nan],
       ['value 1', nan],
       [nan, nan],
       [nan, nan],
       [nan, 'value 2']], dtype=object)

我需要合并此矩阵中的所有列,将 nan 值替换为相应的非 nan 值(如果存在)。示例输出:

array([[nan],
       [nan],
       ['value 1'],
       [nan],
       [nan],
       ['value 2']], dtype=object)

有没有办法通过 NumPy 中的一些内置函数来实现这一点?

编辑:如果单行中有多个 non-nan,我将取第一个 non-nan 值。

值可以是字符串、浮点数或整数

【问题讨论】:

  • 如果单行中有多个 non-nan 怎么办?
  • 值是字符串还是数字?
  • 我认为你被否决和近距离投票是因为你没有表现出任何努力首先自己解决问题。向我们展示您编写的代码、您尝试过的内容以及遇到问题的地方。包括任何错误或你得到的输出不是你想要的。
  • 我们只能猜测人们为什么投票或关闭。他们不倾向于闲逛和阅读cmets。但是,是的,多一点努力可能就足够了——例如尝试减少一行。并且可能有点与nan 平等测试搏斗。

标签: python numpy numpy-ndarray


【解决方案1】:

查找第一列为nan 的行。这是因为nan!=nan:

rows = arr[:,0] != arr[:,0]

用第二个元素更新每个选定行的第一个元素:

arr[rows,0] = arr[rows,1]

选择第一列:

arr[:,[0]]

【讨论】:

  • 非常感谢!
猜你喜欢
  • 2017-05-16
  • 2016-02-02
  • 2017-06-22
  • 2010-12-28
  • 2020-11-15
  • 1970-01-01
  • 2021-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多