Объединение двух неравных массивов - PullRequest
2 голосов
/ 18 ноября 2011

Я создал два одномерных массива столбцов с использованием numpy: один содержит 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]]

Я пытался найти какое-либо решение, но мне не удалось.Я надеюсь найти помощь здесь.Ура, Джон

Ответы [ 2 ]

3 голосов
/ 18 ноября 2011

Это то, что вы хотите? Я использовал функцию 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 голос
/ 19 ноября 2011

Вы хотите 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]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...