为什么使用.mean()时我会得到nan



这是我在空闲时间学习python的git开放课程的一部分。练习仅与numpy交往。因此,下面正在创建一个文件操并导入数据。我添加了skip_header,因为列名是字符串,我得到了nan。因此,数据有33列,我只需要5个使用USECOL添加的5列。

import numpy as np
fp = 'C:\Users\matij\Documents\exercise-5-MatijaKordic\6153237444115dat.csv'
data = np.genfromtxt(fp, skip_header =1, usecols=(0, 2, 22, 27, 28), delimiter=',')

接下来,我需要将数据分为单独的变量,称为站点,日期,temp,temp_max和temp_min。它们对应于usecols =(0、2、22、27、28(。

station = data[:, 0]
date = data[:, 1]
temp = data[:, 2]
temp_max = data[:, 3]
temp_min = data[:, 4]

之后,我需要计算以下内容:

数据中的平均华氏温度是多少?(温度变量(

最高温度的标准偏差是多少?(temp_max变量(

数据中存在多少个独特的站点?(车站变量(

所以,我这样做了:

temp_mean = temp.mean()
temp_max_std = temp_max.std()
station_count = np.unique(station)

我得到了nan的卑鄙和最大。对于独特的电台,我得到[28450。29980.]所以我想我需要以某种方式添加计数吗?

至于平均值和最大值: - 马克斯是南,所以很好。不确定我为什么要在作业中拥有它,但这是另一个故事。 - 但是,这是这个问题的原因。当我打印温度时,我会得到价值,所以为什么要让nan for temp.mean呢?

如果有人有兴趣,这是指向CSV的链接:https://drive.google.com/file/d/1rgneqtfue2rq1hapq06rvldxzi-etgke/view?usp = sharing

我同意Anubhav的帖子,但是我建议使用: np.nanmean(temp)计算均值忘记NaN(不是数字(条目。您也将获得相同的平均值:41.58918641457781max的同样事情:

print(np.nanmean(temp))
print(np.nanmax(temp))

输出:

41.58918641457781
65.0

您正在获取nan,因为Numpy数组中的某些数据是nan。尝试以下操作:

temp_mean = temp[~np.isnan(temp)].mean()
print(temp_mean)
temp_max_std = temp_max[~np.isnan(temp_max)].std()
print(temp_max_std)
station_count = np.unique(station)

输出:

41.58918641457781
9.734807757434636
array([28450., 29980.])

相关内容

  • 没有找到相关文章

最新更新