【问题标题】:Converting list output in Python在 Python 中转换列表输出
【发布时间】:2014-03-07 01:24:34
【问题描述】:

我有一个函数,它可以读取 .csv 文件并将其存储在数组中。

def read_csv(self, filename, delimiter = ',', quotechar = '"'):
    reader = csv.reader(open(filename, 'rb'), delimiter = delimiter, quotechar = quotechar)
    # read first line and extract its data 
    self.column_headings = np.array(next(reader))
    # read subsequent lines
    rows = []
    for row in reader:
        rows.append(row)
    self.data = np.array(rows)
    self.m, self.n = self.data.shape

我只是试图读取一个 .tsv 文件,以便它以相同的形式返回。到目前为止我有这个:

traindata = np.array(p.read_table('train.tsv'))[:,2]

但是,当我尝试调用时:

m, n = traindata.data.shape

# Display
print m, n, traindata.column_headings

我得到了错误:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-14-1f877ccb37b5> in <module>()
----> 1 m, n = traindata.data.shape

AttributeError: 'buffer' object has no attribute 'shape'

是什么导致了这个问题,我该如何解决?

【问题讨论】:

  • 如果您正在读取 .tsv 文件(即制表符分隔值文件),分隔符不应该是 '\t' 吗?
  • @superjump read_csv 函数仅用于读取 csv 文件,我希望我正在读取的 tsv 格式相同,但似乎无法调用 print m, n, traindata.column_headings 函数:)

标签: python arrays list numpy scikit-learn


【解决方案1】:

您显式创建了listtraindata

traindata = list(np.array(p.read_table('train.tsv'))[:,2])
          # ^ here

如果您想将其用作numpy.array,请删除list() 调用:

traindata = np.array(p.read_table('train.tsv'))[:,2]

其次,您想要arrayshape,而不是它的data

m, n = traindata.shape

【讨论】:

  • 哦。上帝。我需要一杯咖啡。抱歉,我不是故意要这样发垃圾邮件的,你知道有时你的眼睛会因为编码太久而擦肩而过吗?!再次抱歉,谢谢:)
  • 您已更改问题,这意味着我的答案不再正确。但是,我已经为您的第二个问题添加了答案。
  • 非常感谢您。不幸的是,现在返回错误------------------------------- -------------------------------- ValueError Traceback (最近一次调用最后一次) in () ----> 1 m, n = traindata.shape ValueError: 但是需要超过 1 个值才能解压。您能在这里提供一些指导吗?
  • 看来你的traindata是一维的,所以shape是一个1元组,不能解包成两个值。
  • 这让我很困惑,因为我的训练数据不是一维的。我在此处上传了它的摘录:pastebin.com/w9tc7tHZ,并且可以从kaggle.com/c/stumbleupon/data(train.tsv 文件)下载全部内容。我不明白为什么它会产生此错误消息,除非我处理引号不正确?对这里的滋扰深表歉意,但非常感谢任何帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-08
  • 1970-01-01
  • 2021-08-08
  • 1970-01-01
  • 2020-06-13
  • 2019-02-26
  • 1970-01-01
相关资源
最近更新 更多