我有两个数组
a = np.array[1,18,3,13,6,45,45]
b= np.array [8,13,6,45,45]
在做了一些匹配练习后,我有一个列表,例如:
[3,1,4]
列表的第一个和第二个数字基于零。第三个数字不是。 该列表代表
第一个数组的起始位置
第二个数组的起始位置
要检索的行数
所以对于这个例子,结果将是
13, 13
6,6
45,45
45,45
数组的两个起点然后在那之后得到4行。
如何使用我的匹配列表合并我的两个数组?
修改 这是我正在使用的匹配列表:
matchlist2 = []
matchlist2.append([3,1,4])
matchlist2.append([9,7,731])
matchlist2.append([766,762,19])
matchlist2.append([800,796,57])
matchlist2.append([867,862,88])
matchlist2.append([960,955,468])
matchlist2.append([1432,1427,65])
matchlist2.append([1523,1518,341])
matchlist2.append([1873,1868,32])
matchlist2.append([1923,1916,82])
matchlist2.append([2011,2004,699])
matchlist2.append([2716,2707,902])
matchlist2.append([3628,3617,247])
matchlist2.append([3923,391,378])
matchlist2.append([4306,4292,5])
答案 0 :(得分:1)
我会这样做:
result = np.array([[[a[ind[0]],b[ind[1]]] for ind in zip(range(ml[0],ml[0]+ml[2]),range(ml[1],ml[1]+ml[2]))] for ml in matchlist2])
编辑:Divakar的解决方案实际上更加优雅。如果你只是拉上它,你就能得到你需要的东西。
result = [list(zip(a[l[0]:l[0]+l[2]],b[l[1]:l[1]+l[2]])) for l in matchlist2]
答案 1 :(得分:0)
这就是你需要的:
a = np.array([1,18,3,13,6,45,45])
b = np.array([8,13,6,45,45])
look = [3,1,4]
first, second, step = look
c = np.array(zip(a[first:first+step],b[second:second+step]))
c
#[[13 13
# [ 6 6
# [45 45
# [45 45]]