如何同步两个不同长度的数组?
How to synchronize two arrays with different length?
让我们考虑两个包含索引的数组:
x = [0,1,2,3,4,5...]
y = [0,3,6,9,12,...]
这些数组的长度可能略有不同,大约最多 3 个索引。
在此示例中,我们假设 len(x) = len(y) - 1
我想 return 同步 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)]
干杯!
让我们考虑两个包含索引的数组:
x = [0,1,2,3,4,5...]
y = [0,3,6,9,12,...]
这些数组的长度可能略有不同,大约最多 3 个索引。
在此示例中,我们假设 len(x) = len(y) - 1
我想 return 同步 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)]
干杯!