python - 从 numpy 数组中获取第 n 个非空值
问题描述
我有一堆数据,我正试图自动从文本文件中取出。我可以轻松地将 vlaues 附加到 numpy 数组并将数据从数字字符串转换为数字浮点数,但问题是字符串的大小可能会有所不同。代码片段如下所示:
pro1 = ' profile1 : ( 99.27, 99.19) 20.82 1.75 4.40 0.86 22.05\n'
pro2 = ' profile2 : ( 100.31, 99.45) 18.97 10.22 3.00 0.35 -73.86\n'
split_data1 = pro1.split(" ")
split_data2 = pro2.split(" ")
我想要这些配置文件中的第 3、第 4 和第 5 个数字(即 20.82、1.75、4.40、18.97、10.22、3.00)。我在拆分数据时遇到问题,因为我需要根据每个数字有多少位数来更改索引(例如,99.27 占用的索引与 100.31 不同,1.75 占用的索引与 10.22 不同,这会改变其余的的字符串索引)。此外,我有大约 30,000 个这些配置文件,因此我需要将其自动化。有什么办法可以确保我总是从字符串中得到正确的数字,以便我可以将它转换为浮点数?有没有办法让 python 给你一个 numpy 数组中的第 n 个非空值?
解决方案
您可以只filter
得到结果序列:
import itertools as it
result = tuple(it.islice(filter(None, pro1.split(' ')), 3, 6))
或者,您可以使用正则表达式将多个空格替换为一个空格:
import re
result = re.sub(' {2,}', ' ', pro1).split(' ')[3:6]
上述方法也适用于不同的分隔符,但是对于在空格上拆分的特定用例,您可以split
不带参数地使用:
result = pro1.split()[3:6]
推荐阅读
- python - conda install conda 在全新安装时发现冲突
- python - 蟒蛇基维。[8620] 无法执行脚本 main。运行 exe 文件时,作为 .py 完美运行
- javascript - pdf.js-extractor - pdf 文件未正确解析
- android - 水平交换/翻转(镜像)整个设备屏幕的内容
- r - 如何自动为多个组添加/分配颜色
- python - 执行解压算法但得到“key error: 0”
- java - 我的接口的 java.lang.ClassNotFoundException
- spring - Spring Boot REST 项目 - JAXB 和继承问题(在非 Spring Boot 版本中工作)
- python - Sqlalchemy 1.4 创建具有无关系字段的模型
- python - $ pip2.7 损坏的 sys.stderr.write(f"ERROR: {exc}") 在 Mac 上