我有数百个类似这样的文本文件,每列之间用三个空格分隔。数据是一年的数据:每个月有12个月和31天。
下面,我只展示与问题相关的内容:
001 DIST - ADILABAD ANDHRA 平均温度
我希望能够将每一列读入到一个数组中并计算平均值。
为此,我使用了
下面,我只展示与问题相关的内容:
001 DIST - ADILABAD ANDHRA 平均温度
DATE JAN FEB MAR . . . . NOV DEC
01 21.5 24.3 27.1 25.8 22.4
02 21.4 24.2 27.1 25.8 22.4
. . . . . .
. . . . . .
. . . . . .
27 23.6 26.8 30.3 23.1 21.3
28 23.8 27.0 30.6 22.9 21.3
29 23.4 31.0 22.9 21.2
30 23.5 31.1 22.6 21.4
31 23.8 31.2 . . . . 21.6
我希望能够将每一列读入到一个数组中并计算平均值。
为此,我使用了
genfromtext()
函数,如下所示:import numpy as np
JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC = np.genfromtxt("tempmean_andhra_adilabad.txt", skiprows=3,
unpack=True, invalid_raise=False,
usecols=(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12),
autostrip=True)
正如您所看到的,我跳过了前三行和第一列,并将每列解包为一个数组。如果不设置invalid_raise=False
,我会收到以下错误:
Traceback (most recent call last):
File "pyshell#32", line 1, in 'module'
JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC = np.genfromtxt("temp mean_andhra_adilabad.txt",skiprows=3,unpack=True,usecols=(1,2,3,4,5,6,7,8,9,10,11,12),autostrip=True)
File "C:\Python27\lib\site-packages\numpy\lib\npyio.py", line 1667, in genfromtxt
raise ValueError(errmsg)
ValueError: Some errors were detected !
Line #32 (got 12 columns instead of 12)
Line #33 (got 12 columns instead of 12)
Line #34 (got 8 columns instead of 12)
我认为这个问题是因为列的长度不同导致的?还是其他原因?
我想看到输出结果,所以我使用了invalid_raise=False
。现在我的问题是,当我打印任何一个数组时,比如JAN
,我只得到28个元素。也就是说每个数组只有28个元素。似乎每个列只读取了28行,因为FEB
列以28天结束。但我需要每个月的数据,即JAN
需要31个元素,JUNE
需要30个元素等等。
如何获取每个月的所有元素?
我认为这是一个非常基本的问题,但我对Python和NumPy
非常陌生,并且仅在两周前开始学习。我在StackOverflow和Google上搜索了很多问题,并学习了如何跳过行、列等内容。但我找不到任何与这个特定问题相关的答案。
请建议一些模块、函数、代码等。
提前致谢。
filling_values=NaN
,但是出现了以下错误NameError: name 'NaN' is not defined
。 - user3707588numpy.NaN
或甚至是0
,有兴趣知道这是否有效。 - EdChumfilling_values
属性,但我没有使用它,认为我以后无法使用np.mean()
来找到平均值。 - user3707588