我正试图加载一个仅由浮点类型组成的csv文件。
data = np.genfromtxt(self.file,dtype=float,delimiter=self.delimiter,names = True)
但这会返回一个元组数组。根据我的搜索,这应该只为非同质数组返回元组。numpy.genfromttxt生成的数组看起来像元组,而不是2D数组——为什么?。当我移除names=True
时,它确实返回了一个2d数组。是否可以按链接中的原样返回带有名称的数组?
csv:中的行
0 _id|1 age|2 unkown|3 male|4 female|5 match-start|6 score
8645632250|7744|0|1|0|1|10
(还有更多的专栏,我刚刚写了前六篇。)
我还使用了这个代码来更好地命名列:
def obtain_data(self):
with open(self.file, 'r') as infile:
first_line = infile.readline()
labels = first_line.split('|')
labels = list(map(trunc_before,labels))
data = np.genfromtxt(self.file,dtype=float,delimiter=self.delimiter,names = labels,skip_header=1)
return data, np.asarray(labels)
听起来你在问是否有可能在拥有命名列的同时拥有标准的2d数组。事实并非如此。(至少不是你所要求的。)
"带名称的数组"是一个结构化数组——它是记录的数组(不是真正的元组),每个记录都有命名字段。可以这样想:名称不是附加到数组,而是附加到"元组"——记录。数据是同质类型这一事实并不重要。