我有两个长度不同的NumPy数组:
a = numpy.array([108, 637, 1172, 1304, 2260, 2809])
b = numpy.array([109, 634, 2254, 2814])
我想要缩短 a
数组,使得每个数组中对应元素相似。匹配的标准是当 b
数组的元素在范围内时:element a - 50 < element b < element a + 50
。因此,a
数组中值为 108
的元素与 b
数组中值为 109
的元素匹配。输出结果如下:
a_prime = numpy.array([108, 637, 2260, 2809])
b_prime = numpy.array([109, 634, 2254, 2814])
我可以通过双重
for
循环配置来实现这一点:a_prime = numpy.zeros(b.shape[0], dtype = int)
b_prime = numpy.copy(b)
for idx, element_b in enumerate(b):
for element_a in a:
if (element_a - 50) < element_b < (element_a + 50):
a_prime[idx] = element_a
然而,对于大数组长度,这将非常耗时。有什么更快、更符合Python风格的方法来达到同样的结果呢?