2017-07-07 32 views
-2

我正在從一個矩陣中取出一列,然後嘗試創建一個數組來平均不同增量的列。我寫了一個示例代碼來顯示我的問題。如何在python中打印整個矩陣?

import numpy 
import numpy as np 
import matplotlib.pyplot as plt 

numint = 2 
numflo = 2.0 

a = numpy.matrix ([[1,2,3],[4,5,6],[7,8,9,],[10,11,12],[13,14,15],[16,17,18]]) 

b= a[-2*3:,1] 

for i in range (0,numint+1,1): 
    avg = sum(b[numint*i:numint*(i+1)])/numflo 
    print avg 

當我運行此代碼,我打印平均環路我進去以下

[[ 3.5]] 
[[ 9.5]] 
[[ 15.5]] 

但如果我打印的平均循環之外,那麼我只是得到

[[15.5]] 

這將拋出我的其餘代碼。它爲什麼不打印整個矩陣avg,而只是最後一個數字。任何幫助表示讚賞,謝謝!

+0

對於每次迭代,循環運行並且avg被更新。你在終端上看到的是矩陣的中間平均值 –

+0

好吧,我怎樣才能得到它,因此循環不會覆蓋以前的平均值,而是創建一個包含所有3個平均值的數組?謝謝 –

回答

1

這是因爲在您的for loop中,您總是將avg更新爲您平均最後一列的平均值。
換句話說,如果你想擁有整個平均數,你可以做這樣的事情作爲一個美麗的一個班輪:

avg = [sum(b[numint*i:numint*(i+1)])/numflo for i in range(0,numint+1,1)] 

那麼你可以簡單地訪問你的價值觀通常喜歡avg[0]等。

+1

好的,謝謝。 –

1

嘗試

avg_list = [] 
for i in range (0,numint+1,1): 
    avg = sum(b[numint*i:numint*(i+1)])/numflo 
    avg_list.append(avg) 

print (avg_list) 
+0

好的,謝謝。 –