@xibolba

Как создать новый массив, объединив каждый элемент 1го с каждым 2 ого?

Нужно быстрое решение на Numpy получить массив C.
Размерности и кол-во элементов в массивах разные.
A = [ [1, 2 , 3],
      [4, 5, 6],
               ...  ]
B = [ [a, b],
      [c, d],
      [e, f],
          ... ]

C = [ [1, 2, 3, a, b],
      [1, 2, 3, c, d],
      [1, 2, 3, e, f],
      [4, 5, 6, a, b],
      [4, 5, 6, c, d],
      [4, 5, 6, e, f],
           ...  ]
  • Вопрос задан
  • 123 просмотра
Пригласить эксперта
Ответы на вопрос 2
Maksim_64
@Maksim_64
Data Analyst
Выглядит как декартово произведение только где элементы это массивы с последующим распремлением.

На питоне что то вроде этого
import itertools
[list(itertools.chain.from_iterable(x)) for x in (list(itertools.product(A,B)))]

Прямой функции в numpy нету плюс у тебя данные не однородные то есть тебе при создании numpy массива придется указать параметр dtype='object', что означает python объект (до свидания скорость). Посмотри реализации в интернете, но массивы не однородные, так что толку по скорости не будет.
Ответ написан
Комментировать
otdameskapizm
@otdameskapizm
Помог ответ? Отметь решением...
Это и правда выглядит, как декартово произведение
Можно также попробовать вот такой вариант:

import itertools

A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
B = [['A', 'B'], ['C', 'D'], ['E', 'G']]
C = [sum(list(row), []) for row in itertools.product(A, B)]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы