gpt4 book ai didi

python - 一行中没有所有 True 值的 boolean 数组

转载 作者:行者123 更新时间:2023-11-28 21:43:29 30 4
gpt4 key购买 nike

我有 numpy 数组:

np.random.seed(100)
mask = np.random.choice([True, False], size=(10,3))
print (mask)
[[ True True False]
[False False False]
[ True True True] <- problem - all values True
[ True True False]
[ True True True] <- problem - all values True
[ True False True]
[ True False True]
[False True True]
[ True False False]
[False True True]]

每一行都不需要所有值 True - 所以这里只能是 012 True 因为 3 个“列”

丑陋的解决方案是:

mask[:, -1] = False
print (mask)
[[ True True False]
[False False False]
[ True True False]
[ True True False]
[ True True False]
[ True False False]
[ True False False]
[False True False]
[ True False False]
[False True False]]

什么是更好、更通用的解决方案?

最佳答案

你可以这样做:

In [109]:
mask[mask.all(axis=1),-1] = False
mask

Out[109]:
array([[ True, True, False],
[False, False, False],
[ True, True, False],
[ True, True, False],
[ True, True, False],
[ True, False, True],
[ True, False, True],
[False, True, True],
[ True, False, False],
[False, True, True]], dtype=bool)

因此,只需使用 all 逐行测试,并在此条件下仅将第 3 列设置为 False

感谢@Divakar,你可以少输入:

In [110]:
mask[mask.all(1),2] = 0
mask

Out[110]:
array([[ True, True, False],
[False, False, False],
[ True, True, False],
[ True, True, False],
[ True, True, False],
[ True, False, True],
[ True, False, True],
[False, True, True],
[ True, False, False],
[False, True, True]], dtype=bool)

所以这里位置 arg axis 被设置并且 0 被转换为 boolean 值 False 否则是相同的

一些解释,首先使用 allaxis=1 来测试 row-wise 是否都是 True。

然后我们使用该掩码来屏蔽方括号中的行,第二个参数 -1 选择最后一列,最后我们分配新的所需值

关于python - 一行中没有所有 True 值的 boolean 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42092335/

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