首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Python中找到二维数组上的最小和最大值

如何在Python中找到二维数组上的最小和最大值
EN

Stack Overflow用户
提问于 2022-06-15 22:58:32
回答 2查看 102关注 0票数 1

一个降雨传感器监测一年的平均降雨量。它记录了每周每天一次和一年中所有52周的总数。然后该程序将

  • 显示每个星期的总降雨量,
  • 显示该年的总降雨量,
  • 是一周中最小和最大的降雨量。

下面的程序从CSV文件中读取数据,然后一次填充数组一行。到目前为止,该程序可以通过一次遍历数组的每一行并递增总雨量来计算一年的总降雨量。我不知道怎样才能找出每周的总降雨量,因为那一周的降雨量最少,也是最大的。

代码语言:javascript
运行
复制
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))

输出

代码语言:javascript
运行
复制
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数据

代码语言:javascript
运行
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-15 23:21:24

我已经看到了一些关于熊猫的建议,这些建议也会很好,但是对于像这样简单的东西,你可能只想使用numpy:

代码语言:javascript
运行
复制
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))

输出:

代码语言:javascript
运行
复制
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.]
票数 2
EN

Stack Overflow用户

发布于 2022-06-15 23:08:34

代码语言:javascript
运行
复制
from itertools import chain

array_max = max(chain(*arrayname))
array_min = min(chain(*arrayname))

请注意,如果没有首先将值转换为int,则min和max将是最低和最高的单个数字,因为min和max将逐个检查字符串中的字符。

(编辑以澄清如果不转换为int会发生什么)

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72638720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档