gpt4 book ai didi

python - Numpy 递归比较行中的所有数据

转载 作者:太空宇宙 更新时间:2023-11-03 14:23:48 26 4
gpt4 key购买 nike

我有一个 bool 型 numpy 数组,如下所示:

bool_arr = array([[ True,  True,  True,  True],
[False, False, True, True],
[False, False, False, True]], dtype=bool)

我想逐行比较,只为 True 的第一个实例返回 True,否则返回 False。所以我想对 bool_arr 进行比较的正确答案是:

ans = array([[ True,  False,  False,  False],
[False, False, True, False],
[False, False, False, True]], dtype=bool)

我想不出没有循环的“Numpy”方法。

最佳答案

您可以沿 axis=1 计算累积和两次,并将第一个 True 值检测为值为 1 的值:

bool_arr.cumsum(axis=1).cumsum(axis=1) == 1
=>
array([[ True, False, False, False],
[False, False, True, False],
[False, False, False, True]], dtype=bool)

注意事项:

  • 将算术(例如求和)应用于 bool 值,将它们视为整数 0 和 1
  • 仅应用一次 cumsum 将适用于问题中的示例,但不适用于在第一个 True 之后立即有 False 的情况.第二个 cumsum 负责处理这个问题。

关于python - Numpy 递归比较行中的所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23480020/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com