Bug小能手系列(python)_8: 使用mne库读取gdf文件报错 Cannot cast ufunc ‘clip‘ output

news2024/11/19 15:29:59

Cannot cast ufunc clip output from dtype 'float64' to dtype 'uint32' with casting rule 'same_kind'

  • 0. 错误介绍
  • 1. 环境介绍
  • 2. 问题分析
  • 3. 解决方法
  • 4. 总结

0. 错误介绍

在加载BCI Competition IV 2a数据集时,当使用mne库的ioread_raw_gdf()函数时出错。注:该代码只是按照正常途径读取GDF文件。
代码如下:

import mne
import matplotlib.pyplot as pl
import numpy as np
import os

filename = "../../dataset/BCICIV_2a_gdf/A02E.gdf" #文件位置根据实际情况修改
raw = mne.io.read_raw_gdf(filename)
print(raw.info)
print(raw.ch_names)

报错:
在这里插入图片描述在这里插入图片描述

1. 环境介绍

考虑到在网上找了众多关于mne库读取gdf文件的文章均没有出现该问题,同时网上找到的关于该报错信息的内容也均未出现上文的情况。因此,在不知道是不是使用mne版本有误的情况下,将代码使用的环境进行记录。

数据来源:BCI Competition IV: Download area
代码环境:python版本为:3.9、mne版本为:1.4.2、numpy版本为:1.25.0

albumentations      1.2.1
asttokens           2.2.1
backcall            0.2.0
certifi             2023.5.7
charset-normalizer  3.1.0
chinese-calendar    1.8.0
colorama            0.4.6
comm                0.1.3
contourpy           1.1.0
cycler              0.11.0
debugpy             1.6.7
decorator           5.1.1
executing           1.2.0
fonttools           4.40.0
idna                3.4
importlib-metadata  6.7.0
importlib-resources 5.12.0
ipykernel           6.23.3
ipython             8.14.0
jedi                0.18.2
Jinja2              3.1.2
jupyter_client      8.3.0
jupyter_core        5.3.1
kiwisolver          1.4.4
MarkupSafe          2.1.3
matplotlib          3.7.1
matplotlib-inline   0.1.6
mne                 1.4.2
nest-asyncio        1.5.6
numpy               1.25.0
packaging           23.1
parso               0.8.3
pickleshare         0.7.5
Pillow              9.5.0
pip                 23.1.2
platformdirs        3.8.0
pooch               1.7.0
prompt-toolkit      3.0.38
psutil              5.9.5
pure-eval           0.2.2
Pygments            2.15.1
pyparsing           3.1.0
pypiwin32           223
python-dateutil     2.8.2
pyttsx3             2.90
pywin32             306
pyzmq               25.1.0
qudida              0.0.4
requests            2.31.0
scipy               1.11.0
setuptools          67.8.0
six                 1.16.0
stack-data          0.6.2
torchaudio          0.12.1+cu116
torchvision         0.13.1+cu116
tornado             6.3.2
tqdm                4.65.0
traitlets           5.9.0
typing_extensions   4.6.3
urllib3             2.0.3
wcwidth             0.2.6
wheel               0.38.4
zipp                3.15.0

2. 问题分析

首先对问题进行分析,根据报错信息以及报错中的问题指出可以发现,错误来源于mne库包中io库包中的一个edf.py的文件中的第1362行
具体地址为:anaconda存放环境地址+ 本conda环境名称+\lib\site-packages\mne\io\edf\edf.py:1362
具体代码为:np.clip(dur, 1, np.inf, out=dur)
错误为:UFuncTypeError: Cannot cast ufunc 'clip' output from dtype('float64') to dtype('uint32') with casting rule 'same_kind',即clip函数中数据必须为同类型,不能同时存在float64类型和uint32类型

因此,分析出错误原因为:dur数组(uint32类型)和np.inffloat64类型)两个不能同时在np.clip() 函数中。

3. 解决方法

最后,如果想要解决该问题,只需将两个数组变为相同类型即可。注意:这里不能变换dur 类型,因为如果变换了后续处理会存在问题,不要问为什么,问就是试过了!!!!

因此,唯一解决方法就是:将无穷大的np.inffloat64类型)变换为无穷大的 uint32类型的数值(这里操作的路径同上述问题分析中具体代码路径)。解决的代码如下:

tmp = 4294967295 # uint32类型的最大值
np.clip(dur, 1, tmp, out=dur)

最后,注意在修改并保存完代码后,需要重启内核,修改后的代码才有效果。
经修改后,代码可以跑通了!实在是不容易哦!!!
在这里插入图片描述

4. 总结

总的而言,感觉出现该错误可能就是我使用的版本中上偏高了(python=3.9),不过好歹问题解决了。网上的相关教程根本没有,所以根据自己的经验来总结这篇文章,希望大家会喜欢。如果有什么疑问欢迎在评论区提出,对于共性问题可能会后续添加到文章介绍中。

如果觉得这篇文章对你有用,记得点赞、收藏并分享给你的小伙伴们哦😄。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/691658.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Haproxy开源负载均衡部署

第一步环境准备: systemctl stop firewalld setenforce 0 systemctl disable firewalld.service #设置开机不启动防火墙sed -i s/SELINUX.*/SELINUXdisabled/ /etc/sysconfig/selinux #设置开机不启动防火墙iptables -F centos7服务器 haproxy 192.168…

自动化测试验证码tesseract安装以及python联调

前提 经常会遇到登录系统时候需要输入动态验证码的情况,但是自动化如何识别图片然后登陆系统? 需要用到pytesseract识别验证码图片以及PIL图像处理方法 import pytesseract from PIL import Image, ImageEnhance1、tesseract安装 OCR,即O…

ESP32报错-Invalid chip id. Expected 9 read 0. Bootloader for wrong chip?

异常现象: 如下图所示,ESP32的 bootloader 运行时候一直报错,导致设备频繁重启,无法跳转至APP 原因及解决方式: 这个报错的原因就是程序编译时候选择的芯片型号和当前实际运行的芯片型号不一致,导致无法…

两个链表的第一个公共节点

题目描述 输入两个链表,找出它们的第一个公共节点。 如下面的两个链表: 在节点 c1 开始相交。 示例 1: 输入:intersectVal 8, listA [4,1,8,4,5], listB [5,0,1,8,4,5], skipA 2, skipB 3 输出:Reference of…

「一键智能去除文件名中的特殊符号,让文件批量改名更加简单!」

文件批量改名一直是个繁琐的任务,其中最麻烦的问题之一就是文件名中的特殊符号。手动去除这些符号是一项耗时而繁琐的工作,但现在有一个更加智能的解决方案,可以让你快速的去除文件名中的特殊符号。方法如下: 首先,我…

漏洞预警|Apache StreamPipes 权限升级漏洞

棱镜七彩安全预警 近日,棱镜七彩威胁情报团队探测到开源项目Apache StreamPipes 存在权限升级漏洞,经分析研判,向全社会发起开源漏洞预警公告,提醒相关安全团队及时响应。 项目介绍 Apache StreamPipes(incubating&…

【正点原子STM32连载】 第四十三章 DHT11数字温湿度传感器 摘自【正点原子】STM32F103 战舰开发指南V1.2

1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id609294757420 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html# 第四…

如何在 ZBrush 和 UE5 中创建精灵吟游诗人(P1)

小伙伴们大家好,今天 云渲染小编给大家带来的是CG艺术家Hugo Sena关于“精灵吟游诗人”项目背后的工作流程,讨论了角色身体、服装和竖琴的工作流程,并解释了如何在虚幻引擎 5 中设置灯光。篇幅较长,分为上下两篇,大家接…

导出csv列错乱

今天在导出CSV文件的时候文件的列错乱了。 场景是将数据库信息导出,采用的是CSV,比excel快点。然后数据需要经过处理后再导入到其他库,导入的时候部分文件解析出错了,原因就是CSV文件内容的列和导入映射的实体字段数量对不上。见…

把你的 Python 技能从 “Hello World“ 升级到 “万能钥匙“:掌握 Python 的输出、输入、数据类型转换和运算符!

前言 这篇文章我将为大家分享 python 的输出、输入、数据类型的转换和运算符 相关的知识。如果大家也想跟着博主一起学习 python ,欢迎订阅专栏哦python学习😊 输出 我们都知道,要想知道程序的运行结果,就需要将结果给打印到屏…

EventLog Analyzer:保障企业等保合规的安全利器

企业等保合规是现代信息安全管理的重要组成部分。在信息化时代,企业面临着越来越多的网络安全威胁和合规要求。为了确保企业的信息系统安全可靠,以及满足相关法规和标准的要求,企业需要借助强大的安全事件管理工具。EventLog Analyzer作为一种…

【力扣】前缀和/滑动窗口:209. 长度最小的子数组

【力扣】前缀和/滑动窗口:209. 长度最小的子数组 文章目录 【力扣】前缀和/滑动窗口:209. 长度最小的子数组1. 问题2. 题解2.1 暴力法2.2 前缀和 二分查找2.3 滑动窗口 参考 1. 问题 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组…

SRGAN图像超分重建算法Python实现(含数据集代码)

摘要:本文介绍深度学习的SRGAN图像超分重建算法,使用Python以及Pytorch框架实现,包含完整训练、测试代码,以及训练数据集文件。博文介绍图像超分算法的原理,包括生成对抗网络和SRGAN模型原理和实现的代码,同…

c++重载函数和虚函数(重写)为什么分别在编译和运行时候确定

函数调用的本质: 函数调用实际上是执行函数体中的代码函数体是内存中的一个代码段函数名代表改代码段的首地址,函数执行时就从这里开始 所以执行一个函数的时候,需要知道具体的函数地址,才能执行函数 重载、重写和隐藏的区别 …

大家想知道ai写作宝怎么样吗?

ai写作是指利用人工智能技术自动生成文章、报告、新闻等文本内容的过程。它可以实现大规模、高效率、低成本的文本创作,免去人工编写的繁琐过程,节约了很多时间和精力。目前在文学创作、新闻报道、广告文案、社交媒体内容创作等方面,ai写作都…

mysql中将多行数据合并成一行数据

mysql中将多行数据合并成一行数据 一个字段可能对应多条数据,用mysql实现将多行数据合并成一行数据 例如:一个活动id(activeId)对应多个模块名(modelName),按照一般的sql语句: SELECT am.act…

英伟达,不止于GPU

光子盒研究院 2013年至2023年这十年,有一家公司的市值翻了115倍、一跃成为美国股市回报率最高的公司——这就是英伟达。 黄仁勋出生于中国台湾,四岁随父母移民美国。1984年大学毕业,获得俄勒冈州立大学和斯坦福大学工程学位。 1993年&#xf…

《九》TypeScript 中的内置工具

TypeScript 内置了很多类型工具&#xff0c;来辅助进行类型转换。 Partial<Type>&#xff1a; Partial<Type>&#xff1a;用于构造一个所有属性都为可选属性的类型。 interface IPerson {name: stringage: number }// personOptional 类型的所有属性都是可选的 …

C++11【二】

文章目录 一、lambda表达式二、线程库三、包装器四、绑定&#xff08;不常用&#xff09; 一、lambda表达式 如果待排序元素为数据集合中的元素和自定义类型&#xff0c;需要用户定义排序时的比较规则不同如下代码&#xff0c;但都可以使用sort方法&#xff0c; #include <…

前端Vue3使用Moment Timezone处理不同时区时间

文章目录 前言一、基本时间概念UTC &#xff0c; GMT本地时间 为了方便比较&#xff0c;图中黑色背景的是 中国&#xff08;China&#xff09;区电脑&#xff0c;白色主题背景的是美国&#xff08;US&#xff09;区电脑&#xff09;2023-06-27T14:00:00.000Z 二、实际案例表单填…