如何同步两个不同长度的数组



让我们考虑两个包含索引的数组:

x = [0,1,2,3,4,5...]
y = [0,3,6,9,12,...]

这些阵列可以具有略微不同的长度,大约高达3个索引。在本例中,我们假设len(x) = len(y) - 1我想返回synchronized x,它将由1条目扩展,以便这些数组仍然彼此对应(x[n]=y[n]+3(。我想出了使用np.searchsorted方法的主意,但它不起作用:

def synchronize_array(self, arr: np.ndarray) -> np.ndarray:
sync_idx = np.searchsorted(arr, BASE_ARR)
sync_idx[sync_idx >= len(arr)] = len(arr) - 1
return arr[sync_idx]

在这种情况下,Sync_idx是[0,n-1,n-1、n-1,…]是否有任何方法可以使这些阵列同步?

不清楚您所说的同步是什么意思,但您可以在这两个数组上迭代,用itertools.zip_longest的默认值填充最短的数组

from itertools import zip_longest
x = [0, 1, 2, 3, 4, 5]
y = [0, 3, 6, 9, 12]
xy = zip_longest(x, y, fillvalue=0)
print(list(xy))

哪个产生

[(0, 0), (1, 3), (2, 6), (3, 9), (4, 12), (5, 0)]

干杯!

最新更新