小能豆

数据被读取为一维但实际上并非如此 - “ValueError:需要多于 1 个值才能解包”

py

使用以下方法:

import numpy as np
import pandas as p
print "loading data.."
traindata = np.array(p.read_table('train.tsv'))[:,2]
column_headings = np.array(p.read_table('train.tsv'))[:,-1]

print "complete..."

当我尝试运行以下命令时:

m,n  = traindata.shape

我收到错误:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-13-570e485a0a88> in <module>()
----> 1 m,n  = traindata.shape

ValueError: need more than 1 value to unpack

我希望能够运行:

打印 m、n、列标题

在我看来,它应该返回类似这样的内容:

7395,27,“url”“urlid”“样板”“alchemy_category”
“alchemy_category_score”“avglinksize”“commonlinkratio_1”
“commonlinkratio_2”“commonlinkratio_3”“commonlinkratio_4”
“compression_ratio”“embed_ratio”“framebased”
“frameTagRatio”“hasDomainLink”“html_ratio”“image_ratio”
“is_news”“lengthyLinkDomain”“linkwordscore”“news_front_page”“non_markup_alphanum_characters”“
numberOfLinks”“numwords_in_url”“parametrizedLinkRatio”“spelling_errors_ratio”“标签”

(总行数为 7,395,总列数为 27)。

最终我希望能够通过类似于以下的单个命令获取每列的值:

url_values = traindata.function('url')

但是,通过调查我发现 column_headers 打印不正确,而且出于某种原因,我只返回了一个维度。我如何才能以这种方式获取每列的值?

我做错了什么?如何才能实现所需的输出?


阅读 18

收藏
2025-01-01

共1个答案

小能豆

您使用 将数据转换traindata为一维数组[:,2],这就是为什么traindata.shape()只返回一个值。这会导致您的错误

ValueError:需要多于 1 个值才能解包

因此,您可以省略该部分并按如下方式调整代码以获得所需的输出:

import numpy as np
import pandas as p
print("loading data..")

traindata = np.array(p.read_table('train.tsv'))#[:,2]
column_headings = np.array(p.read_table('train.tsv', header=None))[0]

print("complete...")

m,n  = traindata.shape

print(m, n, column_headings)

输出:

6 27 ['url' 'urlid' 'boilerplate' 'alchemy_category' 'alchemy_category_score'
 'avglinksize' 'commonlinkratio_1' 'commonlinkratio_2' 'commonlinkratio_3'
 'commonlinkratio_4' 'compression_ratio' 'embed_ratio' 'framebased'
 'frameTagRatio' 'hasDomainLink' 'html_ratio' 'image_ratio' 'is_news'
 'lengthyLinkDomain' 'linkwordscore' 'news_front_page'
 'non_markup_alphanum_characters' 'numberOfLinks' 'numwords_in_url'
 'parametrizedLinkRatio' 'spelling_errors_ratio' 'label']
2025-01-01