组合两个不相等的数组
我创建了两个使用numpy的1维列数组 - 一个具有100个单元格,第二个10000个单元格。我现在想要做的是编写2维数组,其中第一个数组中的每个单元格(具有100个元素的单元格)从第二个数组写入所有10000个值。小例子解释它:组合两个不相等的数组
a =
[[1],
[2],
[3]]
b =
[[4],
[5]]
而且我想获得:
c = [[1], [4],
[1], [5],
[2], [4],
[2], [5],
[3], [4],
[3], [5]]
我试图找到任何解决办法,但我没有成功。我希望能在这里找到帮助。 干杯, Jonh
这是你想要的吗?我使用函数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]])
谢谢!这正是想要获得的。 –
你想要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]])
这确实也是一个很好的(简短易读的)解决方案,但有一点小意见:如果你使用的是numpy数组(并且因此需要numpy数组),那么使用numpy函数的解决方案比使用列表和itertools当数组增长时)。 – joris
我想你可以看看函数''np.repeat''和''np.tile''。 – joris