• python
  • javascript
  • reactjs
  • sql
  • c#
  • java
Facebook Twitter Instagram
Devs Fixed
  • python
  • javascript
  • reactjs
  • sql
  • c#
  • java
Devs Fixed
Home ยป Resolved: How to find min and max on 2D array in Python

Resolved: How to find min and max on 2D array in Python

0
By Isaac Tonny on 16/06/2022 Issue
Share
Facebook Twitter LinkedIn

Question:

A rainfall sensor monitors the average rainfall over a year. It records the total once each day per week and all 52 weeks in a year. The program will then
  • Display the total rainfall for each week
  • Display the total for the year
  • The smallest and largest amount of rainfall in a single week.

The following program reads data from a CSV file and then populates the array one row at a time. So far, the program can calculate the total rainfall for the year by traversing each row of the array at a time and incrementing a total. I am not sure how to find the total rainfall from each week with the smallest and largest amount of rainfall that week.
CODE
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))
output:
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 Data
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

Answer:

I’ve seen some suggestions for pandas, which would also work well, but for something simple like this you may just want to use 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))
Output:
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.]

If you have better answer, please add a comment about this, thank you!

python
Share. Facebook Twitter LinkedIn

Related Posts

Resolved: itertools: cycle through several lists N times via iteration

24/03/2023

Resolved: Convert function is not working with {fn } in SQL Server

24/03/2023

Resolved: Why reference in pointer array doesn’t have data?

24/03/2023

Leave A Reply

© 2023 DEVSFIX.COM

Type above and press Enter to search. Press Esc to cancel.