使用 NumPy 从满足 Python 中的函数的两个数组中查找所有值对

Find all pairs of values from two arrays which satisfy function in Python using NumPy

在 Python 3.6 中使用 NumPy 我有两个整数值 x,y、两个数组 rho_values, theta_values 和一个方程 rho = x*sin(theta) + y*cos(theta).

我想找到 (rho, theta)rho_valuesrhotheta_valuestheta 的所有对 (rho, theta) 满足等式。

根据 this 我想出了以下解决方案,如果 rho, theta 求解方程,我希望在每个 (rho,theta) 索引上给我一个布尔矩阵:

diag = np.linalg.norm((256,400))  # Length of diagonal for some image shape (256,400)
theta_bins = np.linspace(-np.pi / 2, np.pi / 2, 300)
rho_bins = np.linspace(-diag, diag, 300)
def solve(x, y):
    return rho_bins == y*np.sin(theta_bins[:,np.newaxis])+x*np.cos(theta_bins[:,np.newaxis])

for x in range(0, 255):
    for y in range(0, 399):
        print(solve(x,y))

它不起作用。什么是正确和快速的方法来做到这一点?遍历两个数组对我来说不是一个选择,因为我有很多 x,y 值,每个值遍历两个数组都会花费很多时间。

作为一般规则,将 == 与 floating-point 数字一起使用是错误的。考虑使用诸如 abs(x-y)<0.00000001 之类的成语。