无法确定numpy loadtxt命令中的数据类型问题
我正在尝试使用loadtxt来读取一个Ascii文件。这个文件的内容看起来是这样的:
UT, L, R, LocT, MLT, MLAT
240000 1.03033 1.06433 2.73627 2.93244 8.51725
300000 1.01964 1.05914 3.07449 3.24764 6.54548
360000 1.01194 1.05747 3.41200 3.56224 4.51283
420000 1.00746 1.05935 3.74672 3.87489 2.44624
480000 1.00702 1.06476 4.07669 4.18431 0.373423
不过,文件中的每一行至少可以有9个字符。
我一直在使用这段代码:
posdata = np.loadtxt(denfile, dtype={'names':('UT', 'L', 'R', 'loct', 'MLT', 'Mlat'), 'formats':('I9', 'f9', 'f9', 'f9', 'f9', 'f9')} , skiprows = 1)
但是我遇到了一个错误,错误信息是TypeError: data type not understood
。当我用小写的i时,得到的错误也是一样。不过在上面那行读取另一个文件的代码中,如果i是小写的就不行,但如果是大写的就可以。
我不太确定错误出在哪里,也不知道该怎么修复。任何建议都会非常感谢。
1 个回答
4
在numpy里没有72位浮点数这种东西。
你可以选择使用 'f8'
或 'I8'
,或者为了更容易理解,可以用 np.float
或 np.uint
。没有 'f9'
(这本来是72位浮点数)。
你可以看看这个文档,了解如何在numpy中定义数据类型:定义numpy中的数据类型。
不过在你的情况下,可能不需要太在意这个。
如果你不太需要用到结构化数组,那就别用它。(如果你不知道什么是结构化数组,那在这种情况下你可能真的不需要。)
你可以直接用 data = np.loadtxt("datafile.txt", skiprows=1)
来加载数据。如果你确实需要一个结构化数组,可以考虑用 data = np.genfromtxt("datafile.txt", names=True)
。对于简单的情况,后面把第一列转换成无符号整数会更简单,而不是一开始就明确指定数据类型。