【发布时间】:2019-04-26 11:07:47
【问题描述】:
我有两个长度不等的 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
但是,对于较大的数组长度,这将非常耗时。实现相同结果的快速且更 Pythonic 的方法是什么?
【问题讨论】: