numpy.genfromttxt似乎忽略了dtype



我正试图加载一个仅由浮点类型组成的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数组。事实并非如此。(至少不是你所要求的。)

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

相关内容

  • 没有找到相关文章

最新更新