python - 将 numpy 数组与容差进行比较
问题描述
我正在尝试比较存储在 numpy 数组中的浮点数。我希望将它们与公差进行比较,并且数组的每个数字都应该与其他数组的每个数字进行比较。我的尝试如下所示,我使用了两个简单的数组作为示例,但它的问题是它只比较具有相同索引的数字。
b_y_ion_mass = np.array([1.000, 2.1300, 3.4320, 6.0000])
observed_mass_array = np.array([0.7310, 2.2300, 5.999, 8.000, 9.000])
abs_tol = 0.2
for (fragment, mass) in zip(b_y_ion_mass, observed_mass_array):
if (fragment+abs_tol)> mass and (fragment-abs_tol)< mass:
print(mass)
如果有人可以帮助我,那就太好了。
谢谢你。
解决方案
你可以做:
diff_matrix = b_y_ion_mass - observed_mass_array[:, np.newaxis]
用 b 中的每一项减去 a 中的每一项:
array([[ 2.690e-01, 1.399e+00, 2.701e+00, 5.269e+00],
[-1.230e+00, -1.000e-01, 1.202e+00, 3.770e+00],
[-4.999e+00, -3.869e+00, -2.567e+00, 1.000e-03],
[-7.000e+00, -5.870e+00, -4.568e+00, -2.000e+00],
[-8.000e+00, -6.870e+00, -5.568e+00, -3.000e+00]])
然后取绝对值并与您的公差进行比较:
valid = abs(diff_matrix) < abs_tol
输出:
array([[False, False, False, False],
[False, True, False, False],
[False, False, False, True],
[False, False, False, False],
[False, False, False, False]])
所以你可以在这里看到第一个数组中的第二项减去第二个数组中的第二项小于你的容差。此外,第一个数组中的最后一项减去第二个数组中的第三项小于您的容差
推荐阅读
- c# - Xamarin Forms:IOS adhoc 崩溃但调试有效
- c# - 在 ASP.NET 中将阿拉伯语 AM/PM 转换为英语 AM/PM
- lua - Lua - 打印函数计算的结果
- android - 使用 ContentResolver 运行 Robolectric 测试的非法连接指针
- angularjs - 通过控制器动态设置 ng-bind 值,而不是使用表达式
- jquery - jQuery动态表格点击
- javascript - React - 突出显示给定 Xpath 的危险SetHTML 内的文本
- javascript - PixiJS - 基于位置吸收光和动态音频
- emacs - Elisp 以编程方式复制到剪贴板剪贴板
- php - 使用 PHP 隐藏子行的表