我正在尝试加载一个仅包含float类型的csv文件。
data = np.genfromtxt(self.file,dtype=float,delimiter=self.delimiter,names = True)
但是这会返回一个元组数组。根据我的搜索,这应该只返回非同构数组的元组。 numpy.genfromtxt produces array of what looks like tuples, not a 2D array—why?。
当我删除names=True
时,它确实会返回一个二维数组。是否可以返回一个名称在链接中的数组?
来自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)
答案 0 :(得分:5)
这听起来像是在询问是否有可能拥有标准的2d阵列,同时还有命名列。事实并非如此。 (至少不是你似乎在问的意思。)
“名为的数组是一个结构化数组 - 它是一个记录(不是真正的元组)数组,每个都有命名字段。可以这样想:名称不附加到数组,它们附加到“元组” - 记录。数据属于同质类型的事实并不重要。