使用 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_values
中 rho
和 theta_values
中 theta
的所有对 (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 之类的成语。
在 Python 3.6 中使用 NumPy 我有两个整数值 x,y
、两个数组 rho_values, theta_values
和一个方程 rho = x*sin(theta) + y*cos(theta)
.
我想找到 (rho, theta)
在 rho_values
中 rho
和 theta_values
中 theta
的所有对 (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 之类的成语。