在 NumPy 中獲取兩個陣列的組合
-
使用 Python 中的
itertools.product()
函式獲取 NumPy 陣列組合 -
使用 Python 中的
numpy.meshgrid()
函式獲取 NumPy 陣列組合 -
使用 Python 中的
for-in
方法獲取 NumPy 陣列組合
本文將介紹如何在 Python 中求兩個 NumPy 陣列的笛卡爾積。
使用 Python 中的 itertools.product()
函式獲取 NumPy 陣列組合
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)
在上面的程式碼中,我們通過使用 itertools
包內的 product()
函式計算了 array
與其自身的笛卡爾叉積,並將結果儲存在 combinations
中。
使用 Python 中的 numpy.meshgrid()
函式獲取 NumPy 陣列組合
我們還可以使用 NumPy 包中的 meshgrid()
函式 來計算兩個 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]]
在上面的程式碼中,我們使用 NumPy 中的 meshgrid()
函式計算了 array
與其自身的笛卡爾叉積。然後,我們使用 np.array()
函式將此操作的結果轉換為一個陣列,並使用 numpy.reshape()
函式對其進行整形。然後我們將新的重塑結果儲存在 combinations
陣列中。
使用 Python 中的 for-in
方法獲取 NumPy 陣列組合
實現與前兩個示例相同的目標的另一種更直接的方法是使用 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
迭代器計算了兩個陣列的笛卡爾叉積。我們使用 np.array()
函式將結果儲存在 NumPy 陣列 combinations
中。
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn