【问题标题】:Why is the Numpy array created from my csv file full of NaN values?为什么从我的 csv 文件创建的 Numpy 数组中充满了 NaN 值?
【发布时间】:2020-01-19 15:34:12
【问题描述】:

我有一个 csv 文件,我想使用 Numpy 打开它以进行分配(我必须使用 Numpy 来进行分配),但我得到的数组只是充满了 NaN。我的 csv 文件有 2 列和 28 行(如果不包括标题,则为 27 行)字符串:第 1 列中的细菌物种名称和第 2 列中的 URL。

 import numpy as np
 file = open('human_skin_microbiome.csv', 'r')
 file_array = np.genfromtxt(file, delimiter=',')
 print(file_array)

 [[nan nan]
  [nan nan]
  ...
  [nan nan]
  [nan nan]]

请指教!

【问题讨论】:

  • 如果添加skip_header=1会怎样?还是loose=False
  • 即使指定 dtype=None 和 skip_header=1,我也会收到错误:VisibleDeprecationWarning:不推荐使用未指定编码参数的情况下读取 unicode 字符串。设置编码,系统默认使用None。
  • 当我添加松散=假时,我收到错误:ValueError: could not convert string to float: 'Acinetobacter ursingii'
  • 然后添加encoding=None参数。 genfromtxt 默认将数据读取为浮点数,如果字符串不是有效数字,则放入 nan。如果文件有非数字列,则需要更改dtype。我知道genfromtxt 的文档冗长且令人困惑,但有时您只需阅读它们即可。
  • 要调试,您可以打印 file_array.dtype 以查看自动定义的 dtypes。我已经使用dtype=None, names=True, encoding=None 成功读取了带有字符串的 CSV。也许您的某些数据混淆了编码?

标签: python arrays numpy csv


【解决方案1】:

尝试在genfromtext 中指定dtype=Noneencoding = None

【讨论】:

  • 我收到错误:UserWarning: genfromtxt: Empty input file: "<_io.textiowrapper name="human_skin_microbiome.csv" mode="r" encoding="UTF-8">"
  • genfromtext 的文档奇怪地不清楚。如果您删除打开文件的行并直接添加文件名会发生什么? file_array = np.genfromtxt('human_skin_microbiome.csv', delimiter=',')
  • 我同意,关于文档!我收到了只有“nan”元素的数组的原始错误
  • 当你指定 encoding =None 以及 dtype 时怎么样?
猜你喜欢
  • 2018-07-02
  • 1970-01-01
  • 2017-07-24
  • 1970-01-01
  • 1970-01-01
  • 2011-12-13
  • 1970-01-01
  • 2010-12-14
  • 2021-07-31
相关资源
最近更新 更多