Получить комбинации двух массивов в NumPy

  1. Получение комбинаций массивов NumPy с помощью функции itertools.product() в Python
  2. Получите комбинации массивов NumPy с помощью функции numpy.meshgrid() в Python
  3. Получение комбинаций массивов NumPy с методом for-in в Python

В этой статье рассказывается, как найти декартово произведение двух массивов NumPy в Python.

Получение комбинаций массивов NumPy с помощью функции itertools.product() в Python

Пакет itertools предоставляет множество функций, связанных с комбинацией и перестановкой. Мы можем использовать функцию itertools.product() декартово произведение двух итераций. Функция itertools.product() принимает итерации в качестве входных параметров и возвращает декартово произведение итераций.

import itertools as it
import numpy as np

array = np.array([1, 2, 3])

combinations = it.product(array,array)

for combination in combinations:
    print(combination)

Выход:

(1, 1)
(1, 2)
(1, 3)
(2, 1)
(2, 2)
(2, 3)
(3, 1)
(3, 2)
(3, 3)

В приведенном выше коде мы вычислили декартово перекрестное произведение array с самим собой с помощью функции product() внутри пакета itertools и сохранили результат в комбинациях.

Получите комбинации массивов NumPy с помощью функции numpy.meshgrid() в Python

Мы также можем использовать функцию meshgrid() внутри пакета NumPy, чтобы вычислить декартово произведение двух массивов NumPy. Функция numpy.meshgrid() принимает массивы в качестве входных аргументов и возвращает перекрестное произведение двух массивов.

import numpy as np

array = np.array([1,2,3])

combinations = np.array(np.meshgrid(array, array)).T.reshape(-1,2)
print(combinations)

Выход:

[[1 1]
 [1 2]
 [1 3]
 [2 1]
 [2 2]
 [2 3]
 [3 1]
 [3 2]
 [3 3]]

В приведенном выше коде мы вычислили декартово перекрестное произведение array с самим собой, используя функцию meshgrid() в NumPy. Затем мы преобразовали результат этой операции в массив с помощью функции np.array() и изменили его форму с помощью функции numpy.reshape(). Затем мы сохранили новый результат изменения формы в массиве combinations.

Получение комбинаций массивов NumPy с методом for-in в Python

Еще один более простой метод достижения той же цели, что и в предыдущих двух примерах, - использование итератора for-in. Итератор for-in используется для итератора по каждому элементу внутри итерации в Python. Этот метод можно использовать без импорта нового пакета или библиотеки.

import numpy as np

array = np.array([1,2,3])

array2 = np.array([1, 2, 3])

combinations = np.array([(i,j) for i in array for j in array2])
print(combinations)

Выход:

[[1 1]
 [1 2]
 [1 3]
 [2 1]
 [2 2]
 [2 3]
 [3 1]
 [3 2]
 [3 3]]

Мы вычислили декартово перекрестное произведение обоих массивов, используя вложенный итератор for-in в приведенном выше коде. Мы сохранили результат внутри массива combinations NumPy с помощью функции np.array().