np.loadtxt 对比 np.genfromtxt
np.loadtxt vs np.genfromtxt
当我使用下面的np.loadtxt代码加载格式的数据时:
2017-07-26,153.3500,153.9300,153.0600,153.5000,153.5000,12778195.00
数据加载正常,loadtxt 代码->
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)
输出->
['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 代码->
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)
输出->
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 以字符串数据类型加载日期,其余数据以浮点数据类型加载。
loadtxt
和 genfromtxt
以不同方式处理结构化数据的解包
loadtxt
文档:
unpack : bool, optional
If True, the returned array is transposed, so that arguments may be
unpacked using x, y, z = loadtxt(...)
. When used with a structured
data-type, arrays are returned for each field. Default is False.
genfromtxt
文档:
unpack : bool, optional
If True, the returned array is transposed, so that arguments may be
unpacked using x, y, z = loadtxt(...)
最后引述中的 loadtxt
是一个错字。
如果我复制你的样本行 3 次,并且 运行 genfromtxt
(unpack=False
):
我得到一个定义为 dtype
:
的 (3,) 数组
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
产生同样的东西
但是 loadtxt
和 unpack
最终会做
a = data['bDate`]
b = data['Open']
etc.
即为每个变量分配一个字段。
但是genfromtxt
确实如此
a = data[0]
b = data[1]
etc
也就是说,一维数组的一行或一个元素到每个变量。元素比你的 7 个变量多得多,它抱怨要解压的值太多。
所以要么坚持使用 loadtxt
,要么不要将 unpack
与 genfromtxt
一起使用。
我认为不带 unpack
加载结构化数组可以让您在进行进一步处理时有更多选择。
当我使用下面的np.loadtxt代码加载格式的数据时:
2017-07-26,153.3500,153.9300,153.0600,153.5000,153.5000,12778195.00
数据加载正常,loadtxt 代码->
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)
输出->
['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 代码->
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)
输出->
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 以字符串数据类型加载日期,其余数据以浮点数据类型加载。
loadtxt
和 genfromtxt
以不同方式处理结构化数据的解包
loadtxt
文档:
unpack : bool, optional
If True, the returned array is transposed, so that arguments may be unpacked using
x, y, z = loadtxt(...)
. When used with a structured data-type, arrays are returned for each field. Default is False.
genfromtxt
文档:
unpack : bool, optional
If True, the returned array is transposed, so that arguments may be unpacked using
x, y, z = loadtxt(...)
最后引述中的 loadtxt
是一个错字。
如果我复制你的样本行 3 次,并且 运行 genfromtxt
(unpack=False
):
我得到一个定义为 dtype
:
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
产生同样的东西
但是 loadtxt
和 unpack
最终会做
a = data['bDate`]
b = data['Open']
etc.
即为每个变量分配一个字段。
但是genfromtxt
确实如此
a = data[0]
b = data[1]
etc
也就是说,一维数组的一行或一个元素到每个变量。元素比你的 7 个变量多得多,它抱怨要解压的值太多。
所以要么坚持使用 loadtxt
,要么不要将 unpack
与 genfromtxt
一起使用。
我认为不带 unpack
加载结构化数组可以让您在进行进一步处理时有更多选择。