【问题标题】:Numpy - reading array from CSV as [153, ] instead of [153, 394]Numpy - 从 CSV 读取数组为 [153, ] 而不是 [153, 394]
【发布时间】:2015-10-09 20:05:18
【问题描述】:

我有一个包含 153 行和 394 列的 CSV 文件。到目前为止,我能够读取 CSV 文件并删除最后三列:

all_data = np.genfromtxt('data.csv',delimiter=",",names=True)
test_data = all_data[::3]
test_data_x = all_data[:,:-3]

直到今天它一直运行良好。当我今天运行它时,这不起作用,当我打印出 all_data 时,我得到了:

[(1,5,10...4),(2,7,16...3),...,(153,2,16...2)]

我打印出我返回的 all_data 的形状 [153,]。我试过 np.reshape() 但后来我得到:

ValueError: total size of new array must be unchanged

唯一更新的是我正在读取数据的 csv - 但现在它的格式相同,只有标题。我不确定如何让 numpy 正确读取此 CSV?

【问题讨论】:

  • print({len(row) for row in all_data}) 返回什么?
  • 设置([394])。从玩弄它,似乎是 names=True 导致这种情况发生,因为当我删除它时,我得到了一个正常的数组。
  • 使用names 创建一个结构化数组。这些列现在是由dtype 定义的fields。 153 个元素,394 个字段。

标签: python csv numpy


【解决方案1】:

如果我不得不猜测,新的 csv 文件中有一个杂散字符会阻止您的某些数字被解释为数字。您可能需要逐项检查每个生成的元组,以找到有问题的数据位。

【讨论】:

  • 我只是在测试它。不幸的是没有杂散字符 - 但我发现如果我删除'names = True'然后它就起作用了。然后我只添加了skip_header = 1,但我宁愿保留标题。我能想到的标题的唯一问题是它们在每个标题之前都有一个空格。这会导致问题吗?
猜你喜欢
  • 1970-01-01
  • 2017-09-03
  • 1970-01-01
  • 1970-01-01
  • 2018-01-26
  • 2017-08-30
  • 2017-01-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多