python - 使用 Python 优化数组之间的 bool 比较

标签 python optimization numpy boolean-logic slice

我有一些要优化的 Python 代码。它处理两个相同大小的二维数组(它们的大小可以是任意的)。第一个数组充满了任意 bool 值,第二个数组充满了 0 到 1 之间的半随机数。

我想做的是根据修饰符数组中的值更改二进制值。这是一个工作正常的代码片段,它封装了我在两个 for 循环中尝试做的事情:

import numpy as np
xdim = 3
ydim = 4
binaries = np.greater(np.random.rand(xdim,ydim), 0.5)
modifier = np.random.rand(xdim,ydim)

for i in range(binaries.shape[0]):
    for j in range(binaries.shape[1]):
        if np.greater(modifier[i,j], 0.2):
            binaries[i,j] = False

我的问题:是否有更好(或更合适)的方法来做到这一点?我宁愿使用切片之类的东西而不是嵌套的 for 循环,但是比较和 bool 逻辑让我认为这可能是最好的方法。

最佳答案

binaries &= ~(modifier > 0.2)

modifiler > 0.2 创建一个二进制数组,~ 运算符不做 bool 运算,&= 做 bool 运算 and.

注意 ~ &= 是按位运算符,但您可以将它们用作 bool 运算符。

关于python - 使用 Python 优化数组之间的 bool 比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15444291/

相关文章:

python - 从数据框中删除不包含特定长度字符串的行

python - 如何在Python中对无序离散数据进行热编码?

python - 为 Sympy 解决方案建议解决方案

mysql - 使用返回多行的 SELECT 子查询优化 SELECT IN () SQL 查询

python - 查找稀疏 csc_matrix 中存在非零条目的行的索引

python - 如何在 Python 中使用编码 utf-8.py 而不是 cp1252.py

python - 当 python 类 jitclass 包含自身 jitclass 类时,如何使其兼容?

python - 最大化嵌套 for 循环的 cpu 使用率的最简单方法是什么?

Python - Numpy 3D 数组 - 连接问题

python - Numpy 轴上的乘法