首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >np.loadtxt对np.genfromtxt

np.loadtxt对np.genfromtxt
EN

Stack Overflow用户
提问于 2018-06-28 06:51:11
回答 1查看 1.5K关注 0票数 0

当我使用以下np.loadtxt代码加载格式的数据时:

代码语言:javascript
复制
2017-07-26,153.3500,153.9300,153.0600,153.5000,153.5000,12778195.00

数据被加载得很好,loadtxt代码->

代码语言:javascript
复制
a, b, c, d, e, f, g = np.loadtxt("goog.csv",
                                  dtype={'names': ("b'Date", 'Open', 'High', 'Low', 'Close', 'Adjusted_close', 'Volume'),
                                        'formats': ('U10', np.float, np.float, np.float, np.float, np.float, np.float)},                               
                                  delimiter=',',
                                  skiprows=1,
                                  unpack=True)
print(a)

输出->

代码语言:javascript
复制
['2017-07-26' '2017-07-25' '2017-07-24' ..., '2000-01-05' '2000-01-04'
'2000-01-03']

Process finished with exit code 0

但是在使用相应的np.genfromtxt代码时,给出了ValueError:太多的值来解包,我使用了下面的genfromtxt代码->

代码语言:javascript
复制
a, b, c, d, e, f, g = np.genfromtxt('goog.csv',  
                                    dtype={'names': ("b'Date", 'Open', 'High', 'Low', 'Close', 'Adjusted_close', 'Volume'),
                                           'formats': ('U10', np.float, np.float, np.float, np.float, np.float, np.float)},
                                    delimiter=',',
                                    skip_header=1,
                                    unpack=True)
print(a)

输出->

代码语言:javascript
复制
Traceback (most recent call last):
File "C:/Users/sonika jha/PycharmProjects/csvCheck/csvCheck.py", line 84, in <module>
download_stock_data()
File "C:/Users/sonika jha/PycharmProjects/csvCheck/csvCheck.py", line 66, in download_stock_data
unpack=True)
ValueError: too many values to unpack (expected 7)

Process finished with exit code 1

我的最后一个目标是使用genfromtxt以string数据类型加载日期,其余的在float中加载。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-28 07:32:43

loadtxtgenfromtxt以不同的方式处理结构化数据的解压缩

loadtxt文档:

拆包: bool,可选 如果为True,返回的数组将被转置,以便可以使用x, y, z = loadtxt(...)解压缩参数。当与结构化数据类型一起使用时,每个字段都返回数组。默认是假的。

genfromtxt文档:

拆包: bool,可选 如果为True,则转换返回的数组,以便可以使用x, y, z = loadtxt(...)解压缩参数。

最后一个引号中的loadtxt是一个错误。

如果我复制您的示例行3次,并运行genfromtxt (使用unpack=False):

我得到一个(3,)数组与定义的dtype

代码语言:javascript
复制
In [327]: data
Out[327]: 
array([('2017-07-26', 153.35, 153.93, 153.06, 153.5, 153.5, 12778195.),
       ('2017-07-26', 153.35, 153.93, 153.06, 153.5, 153.5, 12778195.),
       ('2017-07-26', 153.35, 153.93, 153.06, 153.5, 153.5, 12778195.)],
      dtype=[('bDate', '<U10'), ('Open', '<f8'), ('High', '<f8'), ('Low', '<f8'), ('Close', '<f8'), ('Adjusted_close', '<f8'), ('Volume', '<f8')])

loadtxt产生的是相同的东西

但是loadtxtunpack最终做了

代码语言:javascript
复制
a = data['bDate`]
b = data['Open']
etc.

也就是说,为每个变量分配一个字段。

但是genfromtxt

代码语言:javascript
复制
a = data[0]
b = data[1]
etc

也就是说,每个变量的1d数组中有一行或元素。它拥有比7个变量更多的元素,它抱怨太多的值需要解包。

所以要么坚持使用loadtxt,要么不要在genfromtxt中使用unpack

我认为在没有unpack的情况下加载结构化数组会给您在进一步处理时提供更多的选择。

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

https://stackoverflow.com/questions/51076408

复制
相关文章

相似问题

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