一个降雨传感器监测一年的平均降雨量。它记录了每周每天一次和一年中所有52周的总数。然后该程序将
下面的程序从CSV文件中读取数据,然后一次填充数组一行。到目前为止,该程序可以通过一次遍历数组的每一行并递增总雨量来计算一年的总降雨量。我不知道怎样才能找出每周的总降雨量,因为那一周的降雨量最少,也是最大的。
码
import random
#global variables
rows = 52
cols = 7
def initArray():
newArray = [[None]*cols for i in range(rows)]
return newArray
def populateArray(arrayname,filename):
rowcounter = 0
colcounter = 0
with open(filename) as readfile:
line = readfile.readline().rstrip('\n')
while line:
#read the line of a file
items = line.split(",")
print("Items = ", items)
#reset the colcounter to ensure first item is placed
#at first position in the 2D array
colcounter = 0
#for the length of the array
for x in range(len(items)):
#place the new values into the array a row at a time
arrayname[rowcounter][colcounter] = int(items[colcounter])
#increment the column counter
colcounter += 1
#increment the row counter
rowcounter += 1
line = readfile.readline().rstrip('\n')
return arrayname
def yearly(arrayname):
total = 0
for x in range(len(arrayname)):
for y in range(len(arrayname[x])):
total += arrayname[x][y]
return total
rainfall = initArray()
rainfall = populateArray(rainfall,"rainfall.csv")
total = yearly(rainfall)
print("The total rainfall for the year was",str(total))
输出
Items = ['2', '16', '10', '2', '12', '9', '9']
Items = ['2', '29', '17', '16', '13', '18', '7']
Items = ['22', '15', '27', '19', '6', '26', '11']
Items = ['21', '7', '18', '4', '14', '14', '2']
Items = ['6', '30', '12', '4', '26', '22', '11']
Items = ['21', '16', '14', '11', '28', '20', '3']
Items = ['19', '10', '22', '18', '30', '9', '27']
Items = ['8', '15', '17', '4', '11', '16', '6']
Items = ['19', '17', '16', '6', '18', '18', '6']
Items = ['2', '15', '3', '25', '27', '16', '11']
Items = ['15', '5', '26', '24', '24', '30', '5']
Items = ['15', '11', '16', '22', '14', '23', '28']
Items = ['25', '6', '7', '20', '26', '18', '16']
Items = ['5', '5', '21', '22', '24', '16', '5']
Items = ['6', '27', '11', '8', '24', '1', '16']
Items = ['28', '4', '1', '4', '3', '19', '24']
Items = ['19', '3', '27', '14', '12', '24', '0']
Items = ['6', '3', '26', '15', '15', '22', '26']
Items = ['18', '5', '0', '14', '15', '7', '26']
Items = ['10', '5', '12', '22', '8', '7', '11']
Items = ['11', '1', '18', '29', '6', '9', '26']
Items = ['3', '23', '2', '21', '29', '15', '25']
Items = ['5', '7', '1', '6', '15', '18', '24']
Items = ['28', '11', '0', '6', '28', '11', '26']
Items = ['4', '28', '9', '24', '11', '13', '2']
Items = ['6', '2', '14', '18', '20', '21', '1']
Items = ['20', '29', '22', '21', '11', '14', '20']
Items = ['28', '23', '14', '17', '25', '3', '18']
Items = ['6', '27', '6', '20', '19', '5', '24']
Items = ['25', '3', '27', '22', '7', '12', '21']
Items = ['12', '22', '8', '7', '0', '11', '8']
Items = ['8', '25', '1', '6', '21', '23', '0']
The total rainfall for the year was 5344
CSV数据
0,0,30,2,21,13,23
29,3,29,30,7,8,25
26,5,26,13,4,13,4
22,30,13,15,15,0,2
3,12,11,10,17,0,15
8,13,11,24,30,24,27
22,18,2,29,11,13,18
15,1,29,23,18,7,0
23,27,3,7,13,14,28
6,25,24,14,20,23,5
24,29,26,22,0,9,18
22,27,22,20,24,29,21
23,13,14,4,13,1,21
25,21,21,6,28,17,19
4,6,11,10,21,1,5
11,7,22,11,10,24,15
25,11,23,3,23,8,3
22,23,0,29,15,12,5
21,11,18,22,1,4,3
11,10,3,1,30,14,22
2,16,10,2,12,9,9
2,29,17,16,13,18,7
22,15,27,19,6,26,11
21,7,18,4,14,14,2
6,30,12,4,26,22,11
21,16,14,11,28,20,3
19,10,22,18,30,9,27
8,15,17,4,11,16,6
19,17,16,6,18,18,6
2,15,3,25,27,16,11
15,5,26,24,24,30,5
15,11,16,22,14,23,28
25,6,7,20,26,18,16
5,5,21,22,24,16,5
6,27,11,8,24,1,16
28,4,1,4,3,19,24
19,3,27,14,12,24,0
6,3,26,15,15,22,26
18,5,0,14,15,7,26
10,5,12,22,8,7,11
11,1,18,29,6,9,26
3,23,2,21,29,15,25
5,7,1,6,15,18,24
28,11,0,6,28,11,26
4,28,9,24,11,13,2
6,2,14,18,20,21,1
20,29,22,21,11,14,20
28,23,14,17,25,3,18
6,27,6,20,19,5,24
25,3,27,22,7,12,21
12,22,8,7,0,11,8
8,25,1,6,21,23,0
发布于 2022-06-15 23:21:24
我已经看到了一些关于熊猫的建议,这些建议也会很好,但是对于像这样简单的东西,你可能只想使用numpy:
import numpy as np
rainfall = np.loadtxt(filename, delimiter=',')
total = rainfall.sum()
print(f"The total rainfall for the year was {total:.0f}")
print(f"Overall Min: {rainfall.min()}")
print(f"Overall Max: {rainfall.max()}")
print("Weekly Sums:")
print(rainfall.sum(axis=1))
print("Weekly Mins:")
print(rainfall.min(axis=1))
输出:
The total rainfall for the year was 5344
Overall Min: 0.0
Overall Max: 30.0
Weekly Sums:
[ 89. 131. 91. 97. 68. 137. 113. 93. 115. 117. 128. 165. 89. 137.
58. 100. 96. 106. 80. 91. 60. 102. 126. 80. 111. 113. 135. 77.
100. 99. 129. 129. 118. 98. 93. 83. 99. 113. 85. 75. 100. 118.
76. 110. 91. 82. 137. 128. 107. 117. 68. 84.]
Weekly Mins:
[ 0. 3. 4. 0. 0. 8. 2. 0. 3. 5. 0. 20. 1. 6. 1. 7. 3. 0.
1. 1. 2. 2. 6. 2. 4. 3. 9. 4. 6. 2. 5. 11. 6. 5. 1. 1.
0. 3. 0. 5. 1. 2. 1. 0. 2. 1. 11. 3. 5. 3. 0. 0.]
发布于 2022-06-15 23:08:34
from itertools import chain
array_max = max(chain(*arrayname))
array_min = min(chain(*arrayname))
请注意,如果没有首先将值转换为int,则min和max将是最低和最高的单个数字,因为min和max将逐个检查字符串中的字符。
(编辑以澄清如果不转换为int会发生什么)
https://stackoverflow.com/questions/72638720
复制相似问题