2015-03-13 68 views
0

我有兩個矩陣。計算總和超過axis=1。然後我想轉置所獲得的結果。結果包含在表達式中。您必須是矩陣1的元素,並且2按行逐行計算總和。總和的移調結果

您是否需要轉置sum數組還是有其他方法?

matrix1 = [[ 5. 4. 3. 5. 3.] 
      [ 5. 7. 8. 2. 2.] 
      [ 8. 2. 4. 0. 3.] 
      [ 7. 2. 5. 3. 5.] 
      [ 3. 1. 3. 0. 2.]] 

matrix2 = [[ 5. 7. 6. 5. 4.] 
      [ 3. 45. 2. 3. 4.] 
      [ 2. 4. 6. 4. 3.] 
      [ 3. 4. 5. 6. 54.] 
      [ 4. 3. 6. 7. 5.]] 

s_1 = np.array(matrix_1.sum(axis=1)) 
s_1 = np.array(matrix_2.sum(axis=1)) 

s_1T = np.transpose(s_1) 
s_2T = np.transpose(s_2) 

結果:

S_1T 
[ 20. 24. 17. 22. 9.] 

S_2T 
[ 27. 57. 19. 72. 25.] 

如何轉置陣?使用表達式

FROM 
[ 20. 24. 17. 22. 9.] 
[ 27. 57. 19. 72. 25.] 

TO 
[20. 
24. 
17. 
22. 
    9.] 

[27. 
    57. 
    19. 
    72. 
    25.] 

換位陣列:

result = ((matrix_2 - matrix_1)/matrix_1)/((s_2T-s_1T)/s_1T) 
+0

您可能是指[[20.] [24.] [17.] [22.] [9.]]? – iced 2015-03-13 11:01:53

回答

1
s1_t = map(lambda e: [e], s_1) 

最有可能的答案,你所追求的。

+2

這會給你一個Python列表,而不是NumPy數組 – YXD 2015-03-13 11:14:15

+0

你好。 s1_t = np.array(地圖(lambda e:[e],s_1)) – kamfulebu 2015-03-13 11:23:28

1

當你拿出總和並回來一維數組時,你正在失去一個軸。移調對一維數組沒有影響。

您可以插入一個新的軸心,或當你需要保持兩個維度的總和,你可以指定keepdims=True(和避免需要轉數組):

matrix1.sum(axis=1, keepdims=True) 

回報:

np.array([[20.], 
      [24.], 
      [17.], 
      [22.], 
      [ 9.]]) 
+0

TypeError:'keepdims'是此函數的無效關鍵字參數 – kamfulebu 2015-03-13 11:21:34

+0

您正在使用哪個版本的NumPy? – 2015-03-13 11:25:09

+0

1.6.1打包在ArcGIS 10.2中。 – kamfulebu 2015-03-13 11:31:41