首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >numpy.genfromtxt没有拆包

numpy.genfromtxt没有拆包
EN

Stack Overflow用户
提问于 2014-02-21 15:07:26
回答 2查看 2K关注 0票数 5

我对包numpy.genfromtxt有一个奇怪的问题。我使用它读取包含许多列(可用的这里)的数据文件,但是即使unpack设置为True,这些列也不会被解压缩。

这是一个MWE

代码语言:javascript
复制
import numpy as np
f_data = np.genfromtxt('file.dat', dtype=None, unpack=True)

print f_data[3]
(237, 304.172, 2017.48, 15.982, 0.005, 0.889, 0.006, -2.567, 0.004, 1.205, 0.006)

(我使用dtype=None,因为文件可以将字符串分散在周围)

如您所见,它返回一行而不是未打包的列。

如果我使用np.loadtxt,它会像预期的那样工作:

代码语言:javascript
复制
f_data = np.loadtxt('file.dat', unpack=True)

print f_data[3]
[ 16.335  16.311  15.674  15.982  16.439  15.903  15.313  18.35   15.643  14.081  16.578  11.477]

我在这里做错什么了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-21 16:57:35

这是你想要的吗?

代码语言:javascript
复制
In [448]: i=3
     ...: d=np.genfromtxt(fname, None) #d is a recorded array (or structured array)
     ...: d['f%d'%i] #Addressing Array Columns by Name
Out[448]: array([ 16.335,  16.311,  15.674,  15.982,  16.439,  15.903])

见:

http://wiki.scipy.org/Cookbook/Recarray

列阵

编辑:

我在以下数据上测试了d=np.genfromtxt('a.x', dtype=None, unpack=True)

代码语言:javascript
复制
144     a578.06 873.72  16.335  0.003 
#-------^--------
180     593.41  665.748 16.311  0.003 
147     868.769 908.472 15.674  0.003
237     asdf.172 2017.48 15.982  0.005
#-------^--------

使用dtype=None,解压缩确实会失败:

代码语言:javascript
复制
In [538]: d=np.genfromtxt('a.x', dtype=None, unpack=True)
     ...: print d[3]
     ...: print d[1]
(237, 'asdf.172', 2017.48, 15.982, 0.005)
(180, '593.41', 665.748, 16.311, 0.003)

在使用default dtypedtype=str时,解包工作:

代码语言:javascript
复制
In [539]: d=np.genfromtxt('a.x',  unpack=True)
     ...: print d[3]
     ...: print d[1]
[ 16.335  16.311  15.674  15.982  16.439  15.903]
[      nan   593.41    868.769       nan  1039.71    385.864]

In [540]: d=np.genfromtxt('a.x', dtype=str, unpack=True)
     ...: print d[3]
     ...: print d[1]
['16.335' '16.311' '15.674' '15.982' '16.439' '15.903']
['a578.06' '593.41' '868.769' 'asdf.172' '1039.71' '385.864']
票数 3
EN

Stack Overflow用户

发布于 2014-02-21 15:20:58

更改

代码语言:javascript
复制
dtype=None

代码语言:javascript
复制
dtype=str

并拆下包装,因为这将转接数据。对于良好做法,添加分隔符:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21937979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档