我有数百个像这样的文本文件,每列用三个空格分隔.数据为一年:每月12个月和31天.

下面,我只是在下面显示与问题相关的内容:

001 disT – ADILABAD ANDHRA MEAN TEMP

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,DEC = np.genfromtxt("temp mean_andhra_adilabad.txt",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天结束.但我需要每个月的数据,即JUNE等1月30日的31个元素.

我如何获得每个月的所有元素?

我认为这是一个非常基本的问题,但我对Python和NumPy很新,并且在两周之后开始学习.我在StackOverflow和Google上搜索了很多问题,并了解了如何跳过行,列等.但我找不到与此特定问题相关的任何答案.

请提出一些模块,功能,代码等.

提前致谢.

解决方法

您的数据不是由文本“分隔”的.相反,它有固定宽度的列.正如@EdChum在他的回答中所示,pandas具有读取具有固定宽度列的数据的功能.您还可以通过在delimiter参数中给出列宽来使用 genfromtxt.看起来字段宽度是(4,…).在下面的代码中,我将其写为(4,)(7,)* 12:
In [27]: (4,) + (7,)*12
Out[27]: (4,7)

genfromtxt使用的默认数据类型是np.float64.如果某个字段无法转换为浮点数,则将替换为nan.因此,月末少于31天的数据将为nan.

在下面,我将您的文件重命名为“temp_mean.txt”.请注意,您的文件末尾有一个额外的空行,因此也使用了参数skip_footer = 1.如果不使用此参数,则会在数据中获得额外的一行nan值.

In [16]: data = genfromtxt("temp_mean.txt",delimiter=(4,)+(7,)*12,usecols=range(1,13),skip_footer=1)

In [17]: data.shape
Out[17]: (31,12)

In [18]: data[:,0]  # JAN
Out[18]: 
array([ 21.5,21.4,21.2,21.7,21.8,22.,22.3,22.5,22.6,22.8,23.1,22.9,23.4,23.5,23.6,23.8,23.8])

In [19]: data[:,1]  # FEB
Out[19]: 
array([ 24.3,24.2,24.3,24.4,24.6,24.1,24.5,24.9,25.,25.1,25.6,25.7,25.8,26.,25.9,26.2,26.5,26.7,26.8,27.,nan,nan])

In [20]: data[-1,:]  # Last row.
Out[20]: 
array([ 23.8,31.2,34.7,27.4,21.6])

要获得每月的手段,您可以使用np.nanmean:

In [21]: np.nanmean(data,axis=0)
Out[21]: 
array([ 22.5483871,25.35714286,29.22903226,32.79333333,34.65806452,31.19666667,27.89032258,27.01612903,27.66666667,27.22580645,24.34666667,21.81290323])

如何使用genfromtxt()从NumPy中的文本文件中读取不同长度的列?的更多相关文章

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. js中‘!.’是什么意思

  3. InnoDB 和 MyISAM 引擎恢复数据库,使用 .frm、.ibd文件恢复数据库

  4. Error: Cannot find module ‘node:util‘问题解决

    控制台 安装 Vue-Cli 最后一步出现 Error: Cannot find module 'node:util' 问题解决方案1.问题C:\Windows\System32>cnpm install -g @vue/cli@4.0.3internal/modules/cjs/loader.js:638 throw err; &nbs

  5. yarn的安装和使用(全网最详细)

    一、yarn的简介:Yarn是facebook发布的一款取代npm的包管理工具。二、yarn的特点:速度超快。Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快。超级安全。在执行代码之前,Yarn 会通过算法校验每个安装包的完整性。超级可靠。使用详细、简洁的锁文件格式和明确的安装算法,Yarn 能够保证在不同系统上无差异的工作。三、y

  6. 前端环境 本机可切换node多版本 问题源头是node使用的高版本

    前言投降投降 重头再来 重装环境 也就分分钟的事 偏要折腾 这下好了1天了 还没折腾出来问题的源头是node 使用的高版本 方案那就用 本机可切换多版本最终问题是因为nodejs的版本太高,导致的node-sass不兼容问题,我的node是v16.14.0的版本,项目中用了"node-sass": "^4.7.2"版本,无法匹配当前的node版本根据文章的提

  7. 宝塔Linux的FTP连接不上的解决方法

    宝塔Linux的FTP连接不上的解决方法常见的几个可能,建议先排查。1.注意内网IP和外网IP2.检查ftp服务是否启动 (面板首页即可看到)3.检查防火墙20端口 ftp 21端口及被动端口39000 - 40000是否放行 (如是腾讯云/阿里云等还需检查安全组)4.是否主动/被动模式都不能连接5.新建一个用户看是否能连接6.修改ftp配置文件 将ForcePassiveIP前面的#去掉 将19

  8. 扩展element-ui el-upload组件,实现复制粘贴上传图片文件,带图片预览功能

  9. 微信小程序canvas实现水平、垂直居中效果

    这篇文章主要介绍了小程序中canvas实现水平、垂直居中效果,本文图文实例代码相结合给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

  10. 使用HTML5做的导航条详细步骤

    这篇文章主要介绍了用HTML5做的导航条详细步骤,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部