如何在python中打印整个矩阵?

时间:2017-07-07 19:47:55

标签: python numpy matplotlib

我从矩阵中取一列,然后尝试创建一个以不同增量平均列的数组。我写了一个示例代码来显示我的问题。

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

当我运行此代码并在循环中打印avg时,我得到以下内容

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

但是如果我在循环之外打印avg然后我就得到了

[[15.5]]

这会抛弃我剩下的代码。为什么它不打印整个矩阵平均值而只打印最后一个数字。感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分: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)