繁体   English   中英

numpy中的列式逻辑运算

[英]Column wise logical operation in numpy

在numpy数组的列之间进行逻辑运算的正确方法是什么?

现在我发现:

import numpy as np

x = np.random.randint(3, 10, (5, 4))
col_or = np.sum(x > 8, axis=1) != 0
col_and = np.prod(x > 8, axis=1) != 0

我需要将逻辑值转换为数值并将逻辑运算转换为常规算术运算,这让我感到困扰。 此外,我还需要检查不等式( != 0

有没有更合适的方法来做到这一点?

您可能应该使用np.allnp.any进行操作。 它们不仅在检查的执行方式方面更有效,而且它们短路。

我意识到这只是一个例子,但我也会避免多次重新计算掩码:

mask = x > 8
col_or = np.any(mask, axis=1)
col_and = np.all(mask, axis=1)

您还可以使用数组本身的allany方法:

col_or = mask.any(axis=1)
col_and = mask.all(axis=1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM