无法在网上找到有关此问题的任何信息。我正在尝试使用numpy从文本文件中读取。
data = np.fromfile("C:\Users\Dan\Desktop\elements.txt",dtype=str,count=-1,sep=' ')
当我运行此代码时,我收到此错误:
ValueError: The elements are 0-sized.
之前我从未见过这个错误,Google搜索没有返回有关此错误的任何信息。为什么会出现此错误,我该如何解决?
编辑:以下是文本文件的摘录
1 Hydrogen 1.008
2 Helium 4.002602
3 Lithium 6.94
4 Beryllium 9.0121831
5 Boron 10.81
6 Carbon 12.011
答案 0 :(得分:4)
最好不要将np.genfromtxt
用于文本文件; np.fromfile
更适合二进制文件。
这给出了你最初想要的字符串数组:
>>> np.genfromtxt('tmp.txt', dtype=str)
array([['1', 'Hydrogen', '1.008'],
['2', 'Helium', '4.002602'],
['3', 'Lithium', '6.94'],
['4', 'Beryllium', '9.0121831'],
['5', 'Boron', '10.81'],
['6', 'Carbon', '12.011']],
dtype='|S9')
这会给你一个具有灵活dtype的记录数组:
>>> np.genfromtxt('tmp.txt', dtype=None)
array([(1, 'Hydrogen', 1.008), (2, 'Helium', 4.002602),
(3, 'Lithium', 6.94), (4, 'Beryllium', 9.0121831),
(5, 'Boron', 10.81), (6, 'Carbon', 12.011)],
dtype=[('f0', '<i8'), ('f1', 'S9'), ('f2', '<f8')])
但这就是我要做的,使用unpack
允许您分配几个变量:
>>> n, name, mass = np.genfromtxt('tmp.txt', dtype='S', unpack=True)
>>> n = n.astype(int)
>>> mass = mass.astype(float)