numpy.genfromtxt似乎忽略了dtype

时间:2013-09-04 11:44:20

标签: python numpy genfromtxt

我正在尝试加载一个仅包含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)

1 个答案:

答案 0 :(得分:5)

这听起来像是在询问是否有可能拥有标准的2d阵列,同时还有命名列。事实并非如此。 (至少不是你似乎在问的意思。)

“名为的数组是一个结构化数组 - 它是一个记录(不是真正的元组)数组,每个都有命名字段。可以这样想:名称不附加到数组,它们附加到“元组” - 记录。数据属于同质类型的事实并不重要。