【问题标题】:How to replace values in a numpy array based on 2 other columns如何根据其他 2 列替换 numpy 数组中的值
【发布时间】:2020-11-03 14:15:47
【问题描述】:

假设我有以下数组:

import numpy as np

a = np.random.randint(10, size=(3,5))

print(a)

输出如下:

[[4 0 3 7 3]
[6 5 7 3 3]
[6 6 4 2 1]]

如果我想选择第 0 列元素为 4 的行并将第 2 列元素替换为 6,我可以执行以下操作。

a[a[:, 0] == 4, 2] = 6

输出如下:

[[4 0 6 7 3]
[6 5 7 3 3]
[6 6 4 2 1]]

如何选择第 0 列元素为 6 的行 AND 第 1 列元素为 5 并将第 2 列元素替换为 9 以便输出如下:

[[4 0 6 7 3]
[6 5 9 3 3]
[6 6 4 2 1]]

【问题讨论】:

标签: python arrays numpy


【解决方案1】:

您可以对条件进行按位与:

a[(a[:, 0] == 6) & (a[:, 1] == 5), 2] = 9

【讨论】:

    【解决方案2】:

    您可以将数组逐行与元组/列表进行比较,并使用all

    a[(a[:,:2]==(6,5)).all(axis=1), 2] = 9
    

    【讨论】:

      猜你喜欢
      • 2021-02-20
      • 1970-01-01
      • 2020-10-21
      • 2013-10-29
      • 1970-01-01
      • 2020-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多