【问题标题】:ValueError: too many values to unpack ScipyValueError:太多值无法解压 Scipy
【发布时间】:2016-02-02 21:15:41
【问题描述】:

我是初学者,我正在尝试使用 scipy 的回归。我收到了错误:

ValueError:解包的值太多

当我运行以下代码时:

testArray1 = [1,2,3] 
testArray2 = [2,3,4] 
slope, intercept, r_value, std_err = scipy.stats.linregress(testArray1,testArray2)

【问题讨论】:

标签: python python-2.7


【解决方案1】:

寻找相同错误的答案让我来到这里,只是在我的情况下,我使用了更复杂的输入(屏蔽数组,前面详述)。我在这里发布我的解决方案,以防有人需要。

Masked Arrays (SciPy: Masked arrays) 的情况下,SciPy 为它们指定了一组统计函数:scipy.stats.mstats

例如,当被 scipy.stats.linregress 调用时,几个 数组列表 会产生相同的错误:

from scipy import stats    

x = [array([4.04]), array([4.38])]
y = [array([3.60]), array([4.03])]

slope, intercept, r_value, std_err = scipy.stats.linregress(x,y)

Traceback (most recent call last):
  File "code.py", line 4, in <module>
    slope, intercept, r, prob, sterrest = stats.linregress(x,y)
  File ".../anaconda/lib/python3.4/site-packages/scipy/stats/_stats_mstats_common.py", line 79, in linregress
    ssxm, ssxym, ssyxm, ssym = np.cov(x, y, bias=1).flat
ValueError: too many values to unpack (expected 4)

但是使用 stats.mstats.linregress() 可以解决这个问题:

from scipy import stats    

x = [array([4.04]), array([4.38])]
y = [array([3.60]), array([4.03])]

slope, intercept, r_value, std_err = scipy.stats.mstats.linregress(x,y)        
print(r**2)

>>> 1.0

【讨论】:

    猜你喜欢
    • 2018-06-01
    • 2020-01-20
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    • 2021-01-16
    相关资源
    最近更新 更多