Numpy合并数组

时间:2017-12-14 22:12:38

标签: python arrays numpy

我有两个数组

 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])

2 个答案:

答案 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]]