我來自 Matlab,我想撰寫一個函式來創建有序對函式。
例子:
Array1=[2,5,7]; Array2 = [6,2];
PairOrdered = [ 2,6 ; 2,2; 5,6;5,2; 7,6; 7,2];
在 Matlab 中,我使用這個邏輯:
LA=length(A);
LB=length(B);
LT= LA*LB;
M = zeros(LT,2);
for i = 1:LA
for j =1:LB
M((i-1)*LB j , : ) = [A(i),B(j)];
end
end
如您所見,我用兩個陣列的長度定義了一對有序矩陣。在 Python 中,我使用相同的邏輯,如下所示:
A = [1,2,3,4];
B = [5,6,7];
LA = len(A)
LB = len(B)
Maux = [];
for i in A:
for j in B:
Maux[(i-1)*LB j , j]
系統這樣說:
回溯(最后一次呼叫):檔案“C:\Users---\Desktop\Code1\ParOrde.py”,第 17 行,在 Maux[(i-1)*LB j , j] TypeError: list indices must是整數或切片,而不是元組
如何創建動態矩陣型別整數?或者我如何解決這個問題?
uj5u.com熱心網友回復:
您正在尋找的是itertools.product()為您提供這兩個串列的產品:
import itertools
Array1 = [2,5,7]
Array2 = [6,2]
Array1_Array2 = list(itertools.product(Array1, Array2))
print(Array1_Array2)
如果你熱衷于自己做,你可能會使用一種理解:
Array1 = [2,5,7]
Array2 = [6,2]
Array1_Array2 = [(a, b) for a in Array1 for b in Array2]
print(Array1_Array2)
或通過傳統for回圈:
Array1 = [2,5,7]
Array2 = [6,2]
Array1_Array2 = []
for a in Array1:
for b in Array2:
Array1_Array2.append((a,b))
print(Array1_Array2)
這三個都會給你一個元組串列:
[(2, 6), (2, 2), (5, 6), (5, 2), (7, 6), (7, 2)]
雖然如果你想要的話,將元組本身轉換為串列是微不足道的。
如果你打算做一些“矩陣”之類的東西,你可能想看看這個numpy包。
作為一個函式實作,它可能看起來像:
def OrderPair(A,B):
return [[a, b] for a in A for b in B]
A1 = [2,5,7]
A2 = [6,2]
S = OrderPair(A1, A2)
print(S)
給你:
[[2, 6], [2, 2], [5, 6], [5, 2], [7, 6], [7, 2]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/446584.html
上一篇:如何向現有圖形添加新圖?
