外包 | “numpy” Assignment
相关资源下载
资源下载
Q3
用到的数据就一个csv文件 第一列: 记载着日期时间, 365天每天24小时的数据, 也就是有 365*24=8760 条数据, 不过是乱序的 第二列: 记载着某一天某个小时的气温 其他列: 用不到
作业要求: pure numpy to do it ?
Q3 - 1
找出数据的标题信息,并打印索引信息
with open('./weatherHistory 2016.csv', 'r', encoding='utf-8') as f:
data = np.loadtxt(f, dtype=str,delimiter = ",")
f.close()
data
for index, title in enumerate(data[0][1:]):
print(f'{index} {title}')
?
Q3 - 2
2.找出所有数据中最高气温和最低气温,以及对应的日期;
allTemp = data[:, 1][1:].astype(np.float16)
maxIndex = allTemp.argmax()
minIndex = allTemp.argmin()
maxTemp = allTemp[maxIndex]
minTemp = allTemp[minIndex]
maxDate = data[:, 0][1:][maxIndex]
minDate = data[:, 0][1:][minIndex]
print(f'最高气温:{maxTemp}, 日期:{maxDate}\n最低气温:{minTemp}, 日期:{minDate}')
?
Q3 - 3
-
整理时间, 对时间进行排序: 将字符类型时间转成时间戳, 然后根据时间戳大小从小到大进行排序
import time
newData = data.copy()[1:, :2]
for i in range(len(newData)):
newData[i][0] = time.mktime(time.strptime(newData[i][0][:19], "%Y-%m-%d %H:%M:%S"))
newData = newData[np.argsort(newData[:,0])]
-
将一天24h的数据重整到一行, 每一行就24列, 最后得到一个 366*24 的矩阵
numDay = int(len(newData) / 24)
reshapeTempArray = np.reshape(newData[:,1], (numDay, 24)).astype(np.float64)
-
绘图 import matplotlib.pyplot as plt
x = [i for i in range(366)]
maxData = np.max(reshapeTempArray, axis=1)
minData = np.min(reshapeTempArray, axis=1)
avgData = np.average(reshapeTempArray, axis=1)
plt.plot(x, maxData, label='max', c='blue')
plt.plot(x, minData, label='min', c='orange')
plt.plot(x, avgData, label='avg', c='green')
plt.legend()
plt.savefig('./figure1.png')
plt.show()
|