查找2D列表中列的平均值

时间:2017-01-06 13:24:20

标签: python

有人可以帮我找到2D列表中列的平均值。我真的不知道如何找到这个。我知道如何对每一行求和,但不为每一列求和。 这是一个问题: 下面的城市有降雨天数,可在文件中找到

city day1 day2
Rhil 15.0 18.0
Moka 12.5 13.5

我需要找到每天所有地区的平均降雨量。 问题的第一部分是读取文件,在2D列表中填充数据并计算每个区域的总降雨量。 每个地区的总降雨量的计算值。 这是代码的第一部分:

fil = open('rainfall.dat.txt','r')
data=[]
for line in fil.readlines():
    details=line.split()
    row=[]
    row.append(details[0])
    row.append(eval(details[1]))
    row.append(eval(details[2]))
    total_rainfall=eval(details[1])+eval(details[2])
    row.append(total_rainfall)
    data.append(row)

我对python有点新鲜,如果有人能解释我如何以最简单的方式找到每天所有地区的平均降雨量,我们非常感谢。 我在网站上搜索了答案,但代码很复杂,没有很好地解释。

2 个答案:

答案 0 :(得分:0)

你可以做以下两件事之一:

1。 在表示列而不是行的列表中输入数据:

l = [
    [1,2,3,4], # Column 1 - not a row
    [5,6,7,8]] # Colum 2 - not a row

在这种情况下,您知道该怎么做。 (对于col in l:print(1.0 * sum(col))/ len(col))

2。 另外,你可以用任何语言表达:

l = [
    [1, 4, 7], # row 1
    [2, 5, 8],
    [3, 6, 9]]

ncols = len(l[0])
nrows = len(l)
# Sum all elements in each column:
results = ncols*[0] # sums per column, afterwards avgs
for col in xrange(ncols):
    for row in xrange(nrows):
        results[col] += l[row][col]
# Then calculate averages:
# * nrows is also number of elements in every col:
nelem = float(nrows)
results = [s/nelem for s in results]

甚至更好:

results = ncols*[0] # avgs per column
nelem = float(nrows)
for col in xrange(ncols):
    for row in xrange(nrows):
        results[col] += l[row][col]
    results[col] /= nelem

print results

输出是:

[2.0, 5.0, 8.0]

答案 1 :(得分:-1)

public RegistryKey GetRegKeyHandle(String key)

{

key = BASE_REG_KEY + "\\" + key;

 if (MainFrame.GetUIControlObject().MGDIsAdmin()) 
  {
     MessageBox.Show("Entered to MGDIsAdmin");
     regWritable = true;
     RegistryKey rkTest = Registry.LocalMachine.OpenSubKey(key, true);

       return rkTest;
    }
     else
     {
         return Registry.LocalMachine.OpenSubKey(key);
      }
}