我正在尝试将列名添加到 numpy ndarray,然后按名称选择列。但它不起作用。我不知道是在添加名称时出现问题,还是在稍后尝试调用它们时出现问题。
这是我的代码。
data = np.genfromtxt(csv_file, delimiter=',', dtype=np.float, skip_header=1)
#Add headers
csv_names = [ s.strip('"') for s in file(csv_file,'r').readline().strip().split(',')]
data = data.astype(np.dtype( [(n, 'float64') for n in csv_names] ))
基于维度的诊断符合我的预期:
print len(csv_names)
>> 108
print data.shape
>> (1652, 108)
“print data.dtype.names”也返回预期的输出。
但是,当我开始按字段名称调用列时,就会发生一些奇怪的事情。“列”仍然是一个包含 108 列的数组...
print data["EDUC"].shape
>> (1652, 108)
...并且它似乎包含比数据集中的行更多的缺失值。
print np.sum(np.isnan(data["EDUC"]))
>> 27976
知道这里出了什么问题吗?添加标题应该是一个微不足道的操作,但我已经与这个错误作斗争了几个小时。帮助!