ValueError: too many values to unpack (expected 4)错误,小波变换函数 wavedec2 使用时提示的「建议收藏」

ValueError: too many values to unpack (expected 4)错误,小波变换函数 wavedec2 使用时提示的「建议收藏」    错误信息还算简单,解包成太多的值,意思就是说你要赋值的变量多了,你的values少了结论    你要赋值的变量多了,你的values少了,这是根本原因,就比如a,b,c,d=20,5,5,就会报错我的出错代码importpywtimportxlrdimportnumpyasnpdefexcel2matrix(path):#把x

大家好,又见面了,我是你们的朋友全栈君。

        错误信息还算简单,解包成太多的值,意思就是说你要赋值的变量多了,你的 values 少了

结论

        你要赋值的变量多了,你的 values 少了,这是根本原因,就比如 a, b, c, d = 20, 5, 5 就会报错

我的出错代码

import pywt
import xlrd
import numpy as np

def excel2matrix(path):    # 把xlsx文件的数据变成np.array数组
    data = xlrd.open_workbook(path)
    table = data.sheets()[0]
    nrows = table.nrows  # 行数
    ncols = table.ncols  # 列数
    datamatrix = np.zeros((nrows, ncols))
    for i in range(nrows):
        rows = table.row_values(i)
        datamatrix[i,:] = rows
    return datamatrix

pathX = '11.xlsx'  # 数据路径
x = excel2matrix(pathX)  
a = np.mean(x)
print(a)

w = 'sym4'  # 小波基类型
l = 3       # 小波变换层次
coeffs = pywt.wavedec2(x,w,l)
[cl, (cH3, cV3, cD3), (cH2, cV2, cD2), (cH1, cV1, cD1)] = coeffs

        这个代码报错

ValueError: too many values to unpack (expected 4)

       

原因

        调用 pywt.wavedec2 时参数错误,其大概形式如下

pywt.wavedec2(data, wavelet, mode=’symmetric’, level=None, axes=(-2, -1))
    data:    输入的数据
    wavelet: 小波基
    level:   尺度(要变换多少层)
    return: 返回的值要注意,每一层的高频都是包含在一个tuple中,例如三层的话返回为 [cl, (cH3, cV3, cD3), (cH2, cV2, cD2)(cH1, cV1, cD1)]

        为什么会错呢,因为我直接使用了参数位置匹配,但是中间有一个 mode=’symmetric’ 我没有指定,自然错了所以换成 coeffs = pywt.wavedec2(data=x, wavelet=w, level=l) 按名称绑定参数,就没错了

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163782.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 后盾人教程_最专业的后盾

    后盾人教程_最专业的后盾CSS3系列课程开课了,老铁快上车吧一引用CSS差别link标签:外部style标签:内联style属性:嵌入式注释:/**/结尾:分号,不能省略css导入其他css样式:@i

    2022年8月4日
    6
  • MySQL 自定义函数_mysql随机时间函数

    MySQL 自定义函数_mysql随机时间函数下面的自定义函数 中,注意delimiter的使用,使用了 group_concat()、find_in_set()  函数,delimiter$$use`test`$$dropfunctionifexists`queryOnePartnerIdById`$$createdefiner=`root`@`localhost`function`queryO

    2022年9月8日
    2
  • Depix:还原马赛克工具的试用及总结[通俗易懂]

    Depix:还原马赛克工具的试用及总结[通俗易懂]背景一周前发现git上有个叫Depix的项目非常火,可以用来去除马赛克。好奇之下准备下来试用一下这个工具参考:https://github.com/beurtschipper/Depix算法说明:https://www.linkedin.com/pulse/recovering-passwords-from-pixelized-screenshots-sipke-mellemaDeBruijn序列:https://damip.net/article-de-bruijn-sequence说

    2022年6月15日
    199
  • 解决smplayer中文字幕乱码

    解决smplayer中文字幕乱码首先,打开选项->首选项:选择字幕选项卡。找到“默认字符编码”选项,在下拉框中选择“简体中文(cp936)”再打开“字体和颜色”页卡(上边),选择“系统字体”在下拉选框中选择一种简体中文字体转载于:https://www.cnblogs.com/hbxtght/archive/2011/05/18/2049938.html…

    2022年7月11日
    18
  • Python负数取余总结

    Python负数取余总结Python负数取余总结余数存在正余数和负余数,要了解负余数,需要先了解取整原理17//5=3-17//5=-417//-5=-4-17//-5=3根据上述的4个公式,可以看出python的编译器是的取整符号位由被除数和除数同时决定,整数的数值是由向下取整的,即如果整数的符号位正,则取靠近0的数,如果整数是负数,则取远离0的数或者也可以这样理解:被除数和除数处于0的一边就往靠0的方向取整,如果是处于0的两边就往远离0的方向取整。了解了取整原理后,再理解取余就比较简单了17

    2022年5月8日
    39
  • linux图形界面扩容lvm,linux下对LVM扩容

    linux图形界面扩容lvm,linux下对LVM扩容操作环境:VirtualBox下RedHat6.464位版本扩容原因:/dev/vg_rhel64/lv_root占用率达到100%,导致部分应用无法继续运行操作过程:1.关闭系统,在虚拟机中添加一块10G的磁盘2.查看新添加磁盘对应的名称[root@rhel64~]#fdisk-cul得知磁盘对应名称为/dev/sdc3.给sdc分区,只分一个区sdc1[root@rhel64…

    2022年6月20日
    22

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号