import csv
import numpy as np
tempsLst = []
with open("nino34.csv") as ifh:
nino = csv.DictReader(ifh)
for row in nino:
tempsLst.append(float(row["TOTAL"]))
#print(tempsLst)
temps = np.array(tempsLst)
median = 20.0
half = len(temps)//2
while len(temps[temps < median]) < half:
#if len(temps[temps < median]) < half:
# median += 0.1
#else:
# median -= 0.1
median += 0.1
#print("Median so far", median)
print(median)
27.0000000000001
a = np.array([
1.01, 0.57, 0.64, 0.14, -0.09, 0.96
])
b = np.where(
a < 0, # Condition
a * -1, # Values to use where true
a * 2 # Values to use where false
)
print(a)
print(b)
[ 1.01 0.57 0.64 0.14 -0.09 0.96] [2.02 1.14 1.28 0.28 0.09 1.92]
a = np.array([
1.01, 0.57, 0.64, 0.14, -0.09, 0.96
])
b = np.where(
a < 0, # if val < 0:
0, # use 0
np.where(
a > 1, # elif val > 1:
1, # use 1
a # else: use original value
)
)
print(a)
print(b)
[ 1.01 0.57 0.64 0.14 -0.09 0.96] [1. 0.57 0.64 0.14 0. 0.96]
import csv
import matplotlib.pyplot as plt
import numpy as np
monsLst = []
tempsLst = []
with open("nino34.csv") as ifh:
nino = csv.DictReader(ifh)
for row in nino:
monsLst.append(f"{row['YR']}-{row['MON']}")
tempsLst.append(float(row["TOTAL"]))
#print(monsLst)
#print(tempsLst)
mons = np.array(monsLst)
temps = np.array(tempsLst)
mean = np.mean(temps)
stddev = np.std(temps)
mask = (
(temps < mean - 2*stddev) |
(temps > mean + 2*stddev)
)
#print(mask)
monsMasked = mons[mask]
tempsMasked = temps[mask]
#print(monsMasked)
#print(tempsMasked)
print(
f"Mean temperature: {mean}. Std. dev.: {stddev}. " +
f"Expected range: {mean-2*stddev} to {mean+2*stddev}."
)
print("Outlier samples:")
#for temp in tempsMasked:
#for mon in monsMasked:
for idx in range(len(tempsMasked)):
print(f" {monsMasked[idx]}: {tempsMasked[idx]}")
plt.plot(temps)
xsMasked = np.array(range(len(temps)))[mask]
plt.plot(xsMasked, tempsMasked, "ro")
plt.show()
Mean temperature: 26.906149614961496. Std. dev.: 0.9838960316810499. Expected range: 24.938357551599395 to 28.873941678323597. Outlier samples: 1950-1: 24.56 1955-10: 24.41 1955-11: 24.25 1955-12: 24.57 1971-1: 24.82 1973-10: 24.74 1973-11: 24.34 1973-12: 24.34 1974-1: 24.47 1975-10: 24.89 1975-12: 24.67 1976-1: 24.54 1983-1: 28.88 1988-10: 24.82 1988-11: 24.66 1988-12: 24.64 1989-1: 24.59 1992-4: 29.02 1992-5: 28.97 1997-10: 29.07 1997-11: 29.11 1997-12: 28.89 1998-1: 28.93 1998-12: 24.92 1999-1: 24.87 1999-12: 24.87 2000-1: 24.79 2008-1: 24.87 2015-6: 28.9 2015-9: 28.92 2015-10: 29.07 2015-11: 29.41 2015-12: 29.26 2016-1: 29.11 2016-2: 29.0 2016-3: 28.9
#!wget https://student.cs.uwaterloo.ca/~cs114/src/sparse.csv
with open("sparse.csv") as ifh:
scores = csv.DictReader(ifh)
fieldnames = list(scores.fieldnames or [])
for row in scores:
studentScores = []
scoreMask = []
for field in fieldnames:
if field != "Student ID":
val = row[field]
if val == "":
studentScores.append(0.0)
scoreMask.append(False)
else:
studentScores.append(float(val))
scoreMask.append(True)
studentScoresA = np.array(studentScores)
scoreMaskA = np.array(scoreMask)
print(
"Mean score:", np.mean(studentScoresA),
"Mean of submitted:", np.mean(studentScoresA[scoreMaskA])
)
Mean score: 89.67 Mean of submitted: 99.63333333333334 Mean score: 99.03 Mean of submitted: 99.03 Mean score: 79.9 Mean of submitted: 99.875 Mean score: 91.72999999999999 Mean of submitted: 91.72999999999999 Mean score: 78.89 Mean of submitted: 98.6125 Mean score: 67.5 Mean of submitted: 84.375 Mean score: 89.58 Mean of submitted: 99.53333333333333 Mean score: 74.66 Mean of submitted: 93.325 Mean score: 100.0 Mean of submitted: 100.0 Mean score: 98.35 Mean of submitted: 98.35 Mean score: 49.56 Mean of submitted: 99.12 Mean score: 74.96000000000001 Mean of submitted: 83.28888888888889 Mean score: 89.69 Mean of submitted: 99.65555555555555 Mean score: 92.32000000000001 Mean of submitted: 92.32000000000001 Mean score: 98.97999999999999 Mean of submitted: 98.97999999999999 Mean score: 10.48 Mean of submitted: 10.48 Mean score: 68.55 Mean of submitted: 97.92857142857142 Mean score: 99.88 Mean of submitted: 99.88 Mean score: 80.64999999999999 Mean of submitted: 89.6111111111111 Mean score: 80.0 Mean of submitted: 100.0 Mean score: 89.74000000000001 Mean of submitted: 89.74000000000001 Mean score: 80.0 Mean of submitted: 100.0 Mean score: 69.08 Mean of submitted: 86.35 Mean score: 98.64 Mean of submitted: 98.64 Mean score: 99.81 Mean of submitted: 99.81 Mean score: 81.64 Mean of submitted: 90.71111111111111 Mean score: 99.08000000000001 Mean of submitted: 99.08000000000001 Mean score: 98.46000000000001 Mean of submitted: 98.46000000000001 Mean score: 89.83 Mean of submitted: 99.8111111111111 Mean score: 85.94000000000001 Mean of submitted: 95.48888888888888 Mean score: 79.46000000000001 Mean of submitted: 99.325 Mean score: 84.78 Mean of submitted: 84.78 Mean score: 98.92 Mean of submitted: 98.92 Mean score: 95.18 Mean of submitted: 95.18 Mean score: 90.0 Mean of submitted: 100.0 Mean score: 92.27 Mean of submitted: 92.27 Mean score: 76.91 Mean of submitted: 85.45555555555556 Mean score: 88.49 Mean of submitted: 98.32222222222222 Mean score: 85.35 Mean of submitted: 94.83333333333333 Mean score: 99.97 Mean of submitted: 99.97 Mean score: 82.73999999999998 Mean of submitted: 91.93333333333334 Mean score: 97.78 Mean of submitted: 97.78 Mean score: 86.66000000000001 Mean of submitted: 96.28888888888889 Mean score: 99.56 Mean of submitted: 99.56 Mean score: 76.80999999999999 Mean of submitted: 85.34444444444445 Mean score: 98.38 Mean of submitted: 98.38 Mean score: 86.05 Mean of submitted: 95.6111111111111 Mean score: 89.86 Mean of submitted: 99.84444444444445 Mean score: 91.85000000000001 Mean of submitted: 91.85000000000001 Mean score: 87.84 Mean of submitted: 97.6 Mean score: 89.24999999999999 Mean of submitted: 99.16666666666666 Mean score: 82.41 Mean of submitted: 91.56666666666666 Mean score: 69.74 Mean of submitted: 99.62857142857142 Mean score: 79.63 Mean of submitted: 88.47777777777777 Mean score: 88.83999999999999 Mean of submitted: 98.71111111111111 Mean score: 84.66999999999999 Mean of submitted: 84.66999999999999 Mean score: 90.0 Mean of submitted: 100.0 Mean score: 98.13 Mean of submitted: 98.13 Mean score: 88.36999999999999 Mean of submitted: 98.18888888888888 Mean score: 74.94000000000001 Mean of submitted: 83.26666666666668 Mean score: 99.67 Mean of submitted: 99.67 Mean score: 86.63 Mean of submitted: 96.25555555555555 Mean score: 96.96000000000001 Mean of submitted: 96.96000000000001 Mean score: 77.9 Mean of submitted: 97.375 Mean score: 79.68 Mean of submitted: 88.53333333333333 Mean score: 99.55 Mean of submitted: 99.55 Mean score: 83.86999999999999 Mean of submitted: 93.1888888888889 Mean score: 89.46 Mean of submitted: 99.39999999999999 Mean score: 79.10999999999999 Mean of submitted: 98.8875 Mean score: 74.74 Mean of submitted: 93.42500000000001 Mean score: 80.0 Mean of submitted: 100.0 Mean score: 80.29 Mean of submitted: 89.21111111111112 Mean score: 79.35 Mean of submitted: 99.1875 Mean score: 96.74 Mean of submitted: 96.74 Mean score: 89.49 Mean of submitted: 99.43333333333334 Mean score: 85.64 Mean of submitted: 95.15555555555555 Mean score: 89.67999999999999 Mean of submitted: 99.64444444444445 Mean score: 87.41 Mean of submitted: 97.1222222222222 Mean score: 97.09 Mean of submitted: 97.09 Mean score: 79.29 Mean of submitted: 88.1 Mean score: 69.84 Mean of submitted: 99.77142857142857 Mean score: 92.11999999999999 Mean of submitted: 92.11999999999999 Mean score: 97.71000000000001 Mean of submitted: 97.71000000000001 Mean score: 55.5 Mean of submitted: 79.28571428571429 Mean score: 79.08 Mean of submitted: 98.85 Mean score: 97.08 Mean of submitted: 97.08 Mean score: 90.0 Mean of submitted: 100.0 Mean score: 76.68 Mean of submitted: 95.85000000000001 Mean score: 97.45 Mean of submitted: 97.45 Mean score: 95.24000000000001 Mean of submitted: 95.24000000000001 Mean score: 89.95 Mean of submitted: 99.94444444444444 Mean score: 82.95 Mean of submitted: 92.16666666666667 Mean score: 88.7 Mean of submitted: 98.55555555555556 Mean score: 96.24 Mean of submitted: 96.24 Mean score: 96.36 Mean of submitted: 96.36 Mean score: 59.339999999999996 Mean of submitted: 98.89999999999999 Mean score: 76.60999999999999 Mean of submitted: 85.1222222222222 Mean score: 100.0 Mean of submitted: 100.0 Mean score: 84.86 Mean of submitted: 94.28888888888888 Mean score: 96.46000000000001 Mean of submitted: 96.46000000000001 Mean score: 67.85 Mean of submitted: 84.8125 Mean score: 88.72 Mean of submitted: 98.57777777777778 Mean score: 72.25 Mean of submitted: 90.3125 Mean score: 88.99 Mean of submitted: 98.87777777777778 Mean score: 84.85999999999999 Mean of submitted: 94.28888888888889 Mean score: 89.17 Mean of submitted: 99.07777777777778 Mean score: 64.52000000000001 Mean of submitted: 92.17142857142858 Mean score: 97.17 Mean of submitted: 97.17 Mean score: 74.63 Mean of submitted: 82.92222222222222 Mean score: 78.78 Mean of submitted: 98.475 Mean score: 85.02000000000001 Mean of submitted: 94.46666666666667 Mean score: 100.0 Mean of submitted: 100.0 Mean score: 78.22 Mean of submitted: 86.91111111111111 Mean score: 78.05999999999999 Mean of submitted: 97.575 Mean score: 87.03999999999999 Mean of submitted: 96.71111111111111 Mean score: 89.32000000000001 Mean of submitted: 99.24444444444445 Mean score: 95.98 Mean of submitted: 95.98 Mean score: 89.42999999999999 Mean of submitted: 99.36666666666666 Mean score: 96.55 Mean of submitted: 96.55 Mean score: 99.94000000000001 Mean of submitted: 99.94000000000001 Mean score: 92.94000000000001 Mean of submitted: 92.94000000000001 Mean score: 98.57 Mean of submitted: 98.57 Mean score: 83.88 Mean of submitted: 83.88 Mean score: 79.58 Mean of submitted: 99.475 Mean score: 87.47 Mean of submitted: 97.1888888888889 Mean score: 99.67 Mean of submitted: 99.67 Mean score: 85.11 Mean of submitted: 94.56666666666666 Mean score: 98.83000000000001 Mean of submitted: 98.83000000000001 Mean score: 97.39000000000001 Mean of submitted: 97.39000000000001 Mean score: 75.77000000000001 Mean of submitted: 94.7125 Mean score: 80.0 Mean of submitted: 100.0 Mean score: 88.95 Mean of submitted: 88.95 Mean score: 100.0 Mean of submitted: 100.0 Mean score: 96.14 Mean of submitted: 96.14 Mean score: 98.69000000000001 Mean of submitted: 98.69000000000001 Mean score: 92.64 Mean of submitted: 92.64 Mean score: 69.82000000000001 Mean of submitted: 99.74285714285715 Mean score: 99.28 Mean of submitted: 99.28 Mean score: 99.71000000000001 Mean of submitted: 99.71000000000001 Mean score: 84.63 Mean of submitted: 94.03333333333333 Mean score: 98.96000000000001 Mean of submitted: 98.96000000000001 Mean score: 70.55 Mean of submitted: 88.1875 Mean score: 78.77 Mean of submitted: 98.4625 Mean score: 90.0 Mean of submitted: 100.0 Mean score: 83.14000000000001 Mean of submitted: 92.3777777777778 Mean score: 77.4 Mean of submitted: 77.4 Mean score: 63.46999999999999 Mean of submitted: 79.3375 Mean score: 71.14 Mean of submitted: 79.04444444444444 Mean score: 51.160000000000004 Mean of submitted: 73.08571428571429 Mean score: 72.78 Mean of submitted: 72.78 Mean score: 73.75 Mean of submitted: 81.94444444444446 Mean score: 68.99 Mean of submitted: 76.65555555555555 Mean score: 63.019999999999996 Mean of submitted: 70.02222222222221 Mean score: 76.42 Mean of submitted: 76.42 Mean score: 63.790000000000006 Mean of submitted: 70.8777777777778
a = np.array([1.1, 2.2, 3.3])
np.savetxt("my-vector.ssv", a)
b = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
np.savetxt("my-matrix.ssv", b)
a = np.loadtxt("my-vector.ssv")
b = np.loadtxt("my-matrix.ssv")
print(a)
print(b)
[1.1 2.2 3.3] [[1. 2. 3.] [4. 5. 6.] [7. 8. 9.]]
# camelCase
# snake_case
class StatsList:
"""
Stores a list of numbers and provides some simple statistics.
"""
lst: list[float]
def __init__(self) -> None:
self.lst = []
x = StatsList()
print(x.lst)
print(x)
[] <__main__.StatsList object at 0x7f1a14fbb280>