【发布时间】:2015-08-15 11:42:01
【问题描述】:
我的 csv 文件(K2CsSb DOS135.csv)很简单,比如:
-7.21E+00 1.34E-01
-7.16E+00 1.15E-01
-7.13E+00 0.00E+00
-7.10E+00 0.00E+00
-7.07E+00 0.00E+00
我使用 genfromtxt 导入此文件,如:
dosdata = genfromtxt('K2CsSb DOS135.csv',delimiter=',')
如果我print(dosdata),它会告诉我:
[[-7.21 0.134]
[-7.16 0.115]
[-7.13 0. ]
...,
我在 numpy 中将这个二维数组数据用于 interp1d。
一切看起来都很完美。 csv文件是在WINDOWS的MS excel中编辑的。
现在我正在使用 MAC OS X 并使用 mac MS excel 编辑此文件仅剪切粘贴,不更改数据类型。然后当我像以前一样导入这个文件并打印时。显示错误:
[-7.21 楠楠楠楠楠楠]
f = interp1d(数据[:,0], 数据[:,1])
IndexError:数组的索引过多
如果我添加dosdata = genfromtxt('K2CsSb DOS135.csv',delimiter=',',dtype=None)
看起来很像:
(-7.21, b'1.30E-01\r-7.16E+00', b'1.20E-01\r-7.13E+00', b'0.00E+00\r-7.10E+00', b'0.00E+00\r-7.07E+00')
为什么会发生这种情况以及如何解决?
【问题讨论】:
-
我不清楚这是否能解决您的问题,但由于您的文件不使用逗号作为分隔符,因此请不要在
genfromtxt中使用参数delimiter=','。跨度> -
添加这个defaultfmt ="%f"
-
那个 MAC
\r(CR) 似乎给 DOS 版本带来了问题。 DOS 使用 (LF/CR)、UNIX (LF)。delimiter=','有效,我有点惊讶,因为文件中没有,。
标签: python macos csv numpy genfromtxt