python - 在 numpy 数组中组合逻辑语句 AND

标签 python arrays numpy

当矩阵中的两个条件都为 True 时,如何选择元素? 在 R 中,基本上可以组合 bool 向量。

所以我的目标是:

A = np.array([2,2,2,2,2])
A < 3 and A > 1  # A < 3 & A > 1 does not work either

评估到: ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()

它应该评估为:

array([True,True,True,True,True])

我的解决方法通常是对这些 bool 向量求和并等于 2,但必须有更好的方法。这是什么?

最佳答案

你可以只使用 & ,例如:

x = np.arange(10)
(x<8) & (x>2)

给予

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

一些细节:

  • 之所以有效,是因为 &是 numpy ufunc bitwise_and 的简写, 这对于 bool类型与 logical_and 相同.也就是说,这也可以拼写为
    bitwise_and(less(x,8), greater(x,2))
  • 你需要括号,因为在 numpy 中 &优先级高于 <>
  • and不起作用,因为它对 numpy 数组不明确,因此 numpy 抛出异常而不是猜测。

关于python - 在 numpy 数组中组合逻辑语句 AND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21996661/

相关文章:

python - 矩阵 x0 上的 Scipy 最小化函数

python - 为什么tensorflow中的 `tf.nn.nce_loss`无法在GPU上运行?

c++ - 如何在指定大小的数组中移动和插入元素

javascript - 数组/字符串的lastIndexOf结果不一致

ruby - 将数组转换为哈希,同时删除重复键和添加值

python - 计算数组中某个值的平均位置快速方法

python - matplotlib 中圆圈的标签

python - 监控节点集群

python - 屏蔽 numpy 数组的特定列

python - 将二维数组中的每一列与另一个二维数组中的每一列相乘