2017-08-29 96 views
1

假設我有一個RxC contingency table。這意味着有R行和C列。我想要一個尺寸爲RC×(R + C - 2)的矩陣X,它包含行 的R-1「主效應」和列的C-1「主效應」。例如,如果你具有R = C = 2(R = [0,1],C = [0,1])和唯一的主效應,有各種方法來參數設計矩陣(X),但低於是一種方法:構建設計矩陣python

1 0 
0 1 
1 0 
0 0 

注意,這是4×2 = RC X(R + C - 2),省略各行的一個級別,並且每個列中的一個電平。

如何可以爲R和C,即R = 3的任何值執行此操作在Python,C = 4([0 1 2]和[0 1 2 3])?我只有R和C的值,但我可以使用它們來構造使用np.arange(R)np.arange(C)的陣列。

+0

你能解釋一下'R = C = 2'給你那個矩陣/數組嗎? – Divakar

+0

可能要從什麼樣的應急表開始,或者至少是一個鏈接。我們是程序員(無論如何我們中的一些人)而不是系統工程師。 –

+0

好點,做了一個編輯 – iwtbid

回答

1

下面應該工作:

R = 3 
C = 2 

ir = np.zeros((R, C)) 
ir[0, :] = 1 
ir = ir.ravel() 

mat = [] 
for i in range(R): 
    mat.append(ir) 
    ir = np.roll(ir, C) 

ic = np.zeros((R, C)) 
ic[:, 0] = 1 
ic = ic.ravel() 

for i in range(C): 
    mat.append(ic) 
    ic = np.roll(ic, R) 

mat = np.asarray(mat).T 

,其結果是:

array([[ 1., 0., 0., 1., 0.], 
     [ 1., 0., 0., 0., 1.], 
     [ 0., 1., 0., 1., 0.], 
     [ 0., 1., 0., 0., 1.], 
     [ 0., 0., 1., 1., 0.], 
     [ 0., 0., 1., 0., 1.]]) 

謝謝大家對你的幫助!