【发布时间】:2021-03-19 03:58:05
【问题描述】:
我有两个固定长度 N 的数组。然后我想使用相同的阈值随机切割这两个数组。然后我想将第一个数组的第一部分粘合到第二个数组的第二部分。这个新数组的大小仍应与原始数组相同。
如果我的解释不清楚,请考虑以下示例:
我们有以下两个数组
arr1 = [1,3,5,7,8,10]
arr2 = [2,4,5,7,8,11]
如果我选择 4 作为阈值,这将给出以下新数组
result = [1,3,4,5,7,8,11]
这显然与原始数组的大小不同。但是,如果我们选择 6 作为阈值,我们会得到
result = [1,3,5,7,8,11]
具有所需大小。由于我将经常在相当大的数组上进行此计算,因此我想知道最有效的方法。我正在用 python 写这个,因此更喜欢使用 numpy 方法的答案。
【问题讨论】:
-
如果长度是奇数,你将如何确定从
arr1和arr2中选择多少? -
看起来您希望解决方案足够动态,以决定从每个数组
arr1和arr2中选择多少,使其与目标数组的长度相匹配。明白了。 -
合并两个数组,创建一个集合,升序排序,然后选择值直到索引 = 数组长度
-
你的数组总是排序的吗?
-
是的,它们总是被排序的。但这只是为了确保我可以根据阈值对它们进行分区。我只希望第一个数组中的元素小于某个值,而第二个数组中的元素大于该值。阈值本身并不重要,但如果可能有多个,我更喜欢将两个数组尽可能地分成两半的那个。