【发布时间】:2014-02-26 09:08:18
【问题描述】:
我正在尝试从以下文件内容创建 MX2 numpy 矩阵或数组:
shell: head WORLD#America.csv
"2013-04-17 12","3","WORLD","#America"
"2013-04-17 13","9","WORLD","#America"
"2013-04-17 14","4","WORLD","#America"
"2013-04-17 15","3","WORLD","#America"
"2013-04-17 16","7","WORLD","#America"
"2013-04-17 17","8","WORLD","#America"
"2013-04-17 18","6","WORLD","#America"
"2013-04-17 19","6","WORLD","#America"
"2013-04-17 20","6","WORLD","#America"
"2013-04-17 21","2","WORLD","#America"
我遇到了genfromtxt() 函数,但未能成功提取我的数据。使用一个名为 f 的文件,我尝试了以下操作:ts = genfromtxt(f, delimiter=",") 并得到了一个用 nan 填充的数组。这只是第一次尝试,所以我阅读了有关 dtype 参数的文档,该参数指定了数组的数据类型。看来,要获得一个包含(datetime, int) 形式的条目的 MX2 矩阵,我将拥有以下内容:dtype=[('f1', datetime64), ('f2', uint)]。当我这样做时,我将以下内容分配给变量ts:
(datetime.datetime(1969, 12, 31, 23, 59, 59, 999999), 18446744073709551615L),
(datetime.datetime(1969, 12, 31, 23, 59, 59, 999999), 18446744073709551615L),
(datetime.datetime(1969, 12, 31, 23, 59, 59, 999999), 18446744073709551615L),
(datetime.datetime(1969, 12, 31, 23, 59, 59, 999999), 18446744073709551615L),
(datetime.datetime(1969, 12, 31, 23, 59, 59, 999999), 18446744073709551615L),
(datetime.datetime(1969, 12, 31, 23, 59, 59, 999999), 18446744073709551615L),
(datetime.datetime(1969, 12, 31, 23, 59, 59, 999999), 18446744073709551615L),
(datetime.datetime(1969, 12, 31, 23, 59, 59, 999999), 18446744073709551615L),
(datetime.datetime(1969, 12, 31, 23, 59, 59, 999999), 18446744073709551615L),
(datetime.datetime(1969, 12, 31, 23, 59, 59, 999999), 18446744073709551615L),
(datetime.datetime(1969, 12, 31, 23, 59, 59, 999999), 18446744073709551615L),
(datetime.datetime(1969, 12, 31, 23, 59, 59, 999999), 18446744073709551615L),
(datetime.datetime(1969, 12, 31, 23, 59, 59, 999999), 18446744073709551615L),
(datetime.datetime(1969, 12, 31, 23, 59, 59, 999999), 18446744073709551615L),
(datetime.datetime(1969, 12, 31, 23, 59, 59, 999999), 18446744073709551615L),
(datetime.datetime(1969, 12, 31, 23, 59, 59, 999999), 18446744073709551615L),
(datetime.datetime(1969, 12, 31, 23, 59, 59, 999999), 18446744073709551615L),
(datetime.datetime(1969, 12, 31, 23, 59, 59, 999999), 18446744073709551615L),
(datetime.datetime(1969, 12, 31, 23, 59, 59, 999999), 18446744073709551615L)],
dtype=[('f1', ('<M8[us]', {})), ('f2', '<u8')])
我为矩阵得到的每个值都是一些常数...为什么它没有从我的文件中读取? 显然这不是我应该得到的输出。
如何获得所需的 MX2 矩阵或数组,其中第一列为 datetime,第二列为整数,如 head 命令所示?
【问题讨论】:
-
查看此答案:stackoverflow.com/questions/2664790/… 我怀疑您的报价造成了麻烦,您需要手动编写转换器。
-
第一列的第一项是
"2013-04-17 12"。12在那个字段中是什么意思?是一天中的某个小时,还是一个单独的数据字段? -
小时,正确!
标签: python arrays numpy genfromtxt