【发布时间】:2023-04-03 16:36:01
【问题描述】:
我可以很好地读取数据文件,但是当我尝试通过自己指定名称或从第一行读取来添加名称参数时,我会返回空字符串
data_no_headers = genfromtxt('SimpleDataWithHeaders.csv',delimiter=',',dtype='str',autostrip=True)
print(data_no_headers)
data_with_headers = genfromtxt('SimpleDataWithHeaders.csv',delimiter=',',dtype='str',autostrip=True,names=True)
print(data_with_headers)
data_with_headers = genfromtxt('SimpleDataWithHeaders.csv',delimiter=',',skip_header=1,dtype='str',autostrip=True,names="A,B")
print(data_with_headers)
mycols = ['a','b']
data_with_headers = genfromtxt('SimpleDataWithHeaders.csv',delimiter=',',skip_header=1,dtype='str',autostrip=True,names=mycols)
print(data_with_headers)
如果我执行此代码,我会得到以下输出(我制作了一个非常简单的 csv 文件,其中包含三行和一个标题行来说明问题),您可以看到上面每个命令的输出。在我添加名称参数之前,您可以看到它工作正常
[['CODE' 'AIRPORT']
['HOU' 'Houston']
['ABQ' 'Alberquerque']
['BWI' 'Baltimore']]
[('', '') ('', '') ('', '')]
[('', '') ('', '') ('', '')]
[('', '') ('', '') ('', '')]
【问题讨论】:
-
使用
names时,还要指定dtype=None。dtype=str使字段 dtype 'U',一个 0 元素字符串,因此是 '' 结果)。如果您查看data.dtype或print(repr(data)),问题会更加明显。 -
如果你不需要带有字段的结构化数组,你可以跳过标题,只得到一个 (n,2) 字符串 dtype 数组。
-
更改 dtype=None 并添加 encoding=None 确实会读取读入的值,但现在它不再创建多行,而是得到单行对...
-
data_with_headers = genfromtxt('SimpleDataWithHeaders.csv',delimiter=',',dtype=None, encoding=None,autostrip=True,names=True) print(data_with_headers)
-
[('HOU', 'Houston') ('ABQ', 'Alberquerque') ('BWI', 'Baltimore')]
标签: python numpy genfromtxt