解决方案
对于每两个数组中的一对,您可以执行以下操作。
np.hstack([a[:-1], np.array([a[-1], b[0]]).sum(), b[1:]])
对于数组列表:
我在这里使用的虚拟数据是使用此解决方案末尾(最底部)给出的代码创建的。为此,您只需要以下两个功能。
def array_stitch(a, b):
c = np.hstack([a[:-1], np.array([a[-1], b[0]]).sum(), b[1:]])
return c
def recursive_array_stitch(array_list):
c = array_stitch(array_list[0], array_list[1])
for e in array_list[2:]:
c = array_stitch(c, e)
return c
recursive_array_stitch(array_list)
输出:
array([ 4, 5, 6, 8, 2, 3, 8, 5, 9, 4, 5, 6, 8, 5, 4, 5, 6,
10, 2])
这里array_list 由以下给出:
[array([4, 5, 6, 7]),
array([1, 2, 3, 4]),
array([4, 5, 6]),
array([3, 4, 5, 6, 7]),
array([1, 2]),
array([3, 4, 5, 6, 7]),
array([2]),
array([1, 2])]
详细解决方案
仅适用于两个数组,如问题的问题陈述中所示。对于多个数组,这可以递归使用,这就是上面部分中所做的。
import numpy as np
a = np.array((1,2,3))
b = np.array((2,3,4))
c = np.hstack([a[:-1], np.array([a[-1], b[0]]).sum(), b[1:]])
c
输出:
array([1, 2, 5, 3, 4])
如果你想要它作为一个元组:c.tuple() 会给你(1, 2, 5, 3, 4)。
对于数组列表
请参阅开头的解决方案以获取数组列表。我将使用使用以下代码创建的数据。
# Dummy Data
np.random.seed = 43
start, stop = np.random.randint(1,5,size=8), np.random.randint(3,9,size=8)
array_list = [np.arange(k,k+3) if l<=k else np.arange(k,l) for k,l in zip(start, stop)]
array_list
输出:
[array([4, 5, 6, 7]),
array([1, 2, 3, 4]),
array([4, 5, 6]),
array([3, 4, 5, 6, 7]),
array([1, 2]),
array([3, 4, 5, 6, 7]),
array([2]),
array([1, 2])]