【发布时间】:2012-05-31 07:51:18
【问题描述】:
我正在尝试将列名添加到 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
知道这里出了什么问题吗?添加标题应该是一个微不足道的操作,但我已经与这个错误作斗争了几个小时。救命!
【问题讨论】:
标签: python arrays numpy multidimensional-array