我从矩阵中取一列,然后尝试创建一个以不同增量平均列的数组。我写了一个示例代码来显示我的问题。
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]]
这会抛弃我剩下的代码。为什么它不打印整个矩阵平均值而只打印最后一个数字。感谢任何帮助,谢谢!
答案 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)