python - 比较两个不同大小的一维数组中的元素,具有公差

标签 python arrays python-3.x numpy

<分区>

我想找出数组“A”中存在哪些值也存在于数组“B”中。但是,数组的大小不同,我想引入一个公差,因为两个数据集之间可能存在系统误差。

我知道“np.isclose”,但这是针对相同大小的数组。

最佳答案

您可以通过使用稍微更内置的 numpy 解决方案来改进嵌套循环:

import numpy as np

A = np.array([0, 0.3141, 1.234, 4.1341, -34.112])
B = np.array([0.3142, 2.234, 4.1340, -34.113, 40])
res = {i for i in A if np.isclose(B, i, 0.1).any()}
print(res)

输出:

{0.3141, 4.1341, -34.112}

时间:

In [2]: %timeit {i for i in A if np.isclose(B, i, 0.1).any()}
276 µs ± 16.2 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [3]: %timeit {x for x in A for y in B if np.isclose(x, y, atol=0.1)}
1.08 ms ± 12 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

关于python - 比较两个不同大小的一维数组中的元素,具有公差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49697577/

相关文章:

python - 在 jupyter notebook 上导入 OpenCV

python - 为什么在迭代时删除列表中的项目时索引会超出范围?

mysql - 选择数组、子查询和多行结果

python - python 内置的 __exit__ 参数类型是什么?

python - 操作系统错误 : cannot open resource

python - 尝试从 pyevolve 导入时出现 "AttributeError: fileno"

python - 由于 Web 部署而将绝对路径更改为相对路径(Python - Flask)

javascript - 改变 JavaScript 数组内部函数

javascript - 为什么 goog.crypt.base64.decodeStringToByteArray(string) 在这里返回无效的字节数组?

python - 安装多个python版本时,如何将模块添加到特定的python版本?