掩码大小不同,然后替换另一个数组中的元素

问题描述 投票:0回答:1

我有两个大小分别为ab的数组,我想获得一个新数组,其大小与最大数组[a_and_b]相同,并且元素的各处都具有zeros,除了这两个元素之间的差异最小。然后,我想用与第一个数组大小相同的另一个数组的元素替换其非零元素。

a = np.asarray([1, 3])
b = np.asarray([0.8, 0.95, 1.1, 1.25, 1.40, 1.55, 1.70, 1.85, 2.00, 2.15, 2.30, 2.45, 2.60, 2.75, 2.90, 3.05])
c = np.asarray([15.145, 18.191])

a_and_b = [0 0.95 0 0 0 0 0 0 0 0 0 0 0 0 0 3.05]
final = [0 15.145 0 0 0 0 0 0 0 0 0 0 0 0 0 18.191]

我如何获得final

我有两个大小分别为a和b的数组,我想获得一个新数组,其大小与最大的数组(a_and_b)相同,并且所有元素的零点处都为零,除非有差异时...

python arrays numpy list-comprehension mask
1个回答
1
投票

尝试一下。

import numpy as np

a = np.asarray([1, 3])
b = np.asarray([0.8, 0.95, 1.1, 1.25, 1.40, 1.55, 1.70, 1.85, 2.00, 2.15, 2.30, 2.45, 2.60, 2.75, 2.90, 3.05])
c = np.asarray([15.145, 18.191])

a_and_b, final = np.zeros_like(b), np.zeros_like(b)
min_ba = (abs(b.reshape(1,-1)-a.reshape(-1,1)).argmin(axis=1))
a_and_b[min_ba] = b[min_ba]
final[min_ba] = c
print(a_and_b)
print(final)
© www.soinside.com 2019 - 2024. All rights reserved.