组合两个不相等的数组

时间:2011-11-18 11:26:34

标签: arrays numpy

我使用numpy创建了两个1维列数组 - 一个包含100个单元格,另一个包含10000个单元格。我现在要做的是为第一个数组中的每个单元(具有100个元素的单元)写入二维数组,从第二个数组写入所有10000个值。解释它的一个小例子:

a = 
  [[1],
   [2],
   [3]]

b =  
  [[4],
   [5]]

我想获得:

c = [[1], [4],
     [1], [5],
     [2], [4],
     [2], [5],
     [3], [4],
     [3], [5]]

我试图找到任何解决方案,但我没有成功。我希望在这里找到帮助。 干杯,    Jonh

2 个答案:

答案 0 :(得分:3)

这是你想要的吗?我使用函数np.repeat重复每个单独的元素(第一个数组)和np.tile重复整个数组(第二个数组)。

>>> import numpy as np
>>> a = np.array([[1],[2],[3]])
>>> b = np.array([[4],[5]])
>>> 
>>> at = np.repeat(a, len(b), axis = 0)
>>> at
array([[1],
       [1],
       [2],
       [2],
       [3],
       [3]])
>>> bt = np.tile(b, (len(a), 1))
>>> bt
array([[4],
       [5],
       [4],
       [5],
       [4],
       [5]])
>>> np.concatenate((at, bt), axis = 1)
array([[1, 4],
       [1, 5],
       [2, 4],
       [2, 5],
       [3, 4],
       [3, 5]])

答案 1 :(得分:1)

您想要itertools.product

In [2]: import itertools

In [3]: scipy.array(list(itertools.product([1,2,3], [4,5])))
Out[3]: 
array([[1, 4],
       [1, 5],
       [2, 4],
       [2, 5],
       [3, 4],
       [3, 5]])