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

news/2025/1/12 3:58:30/

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 osfilename = "../../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.ppmy.cn/news/613035.html

相关文章

图像合成与风格转换实战

图像合成与风格转换实战 神经式转移 Neural Style Transfer 如果使用社交分享应用程序或者碰巧是个业余摄影师,对过滤器很熟悉。滤镜可以改变照片的颜色样式,使背景更清晰或人的脸更白。然而,过滤器通常只能改变照片的一个方面。要创建理想…

Python中创建文件并往里面追加写入内容

如果你想在Python中创建文件并往里面追加写入内容,可以使用内置的open()函数和文件对象的write()方法。 以下是一个简单的例子,演示如何创建一个文件,往里面追加写入内容: filename "example.txt"# 追加写入内容到文…

window10 系统上 ecplise 环境搭建

ecplise 安装需要用到 JDK 环境的搭建以及ecplise 的下载 这两部完成即可 一: JDK环境搭建 到官网上下载JDK并且安装即可(下载的时候注意选择Accept License Agreement ),怎样查看自己的JDK是否安装成功 先配置环境变量 此电脑-右键-属性-高级属性…

usaco Controlling Companies

Controlling Companies 控制公司有些公司是其他公司的部分拥有者,因为他们获得了其他公司发行的股票的一部分.例如,福特公司拥有马自达公司 12%的股票.据说,如果至少满足了以下条件之一,公司 A 就可以控制公司 B 了:公司 A 公司 B.公司 A 拥有大于 50%的公司 B 的股票.公司A控…

Intel HAXM is required to run this AVD VT-x is disabled in BIOS的处理方法

当遇到Intel HAXM is required to run this AVD VT-x is disabled in BIOS 的问题时候 这个就是说你的模拟器出现问题了 这个问题处理方法大致分为2种 1 ,下载一个模拟器,或者干脆用手机也行 2 ,进入电脑的BIOS security 设置 这个下面不…

Kaggle上的犬种识别(ImageNet Dogs)

Kaggle上的犬种识别(ImageNet Dogs) Dog Breed Identification (ImageNet Dogs) on Kaggle 在本节中,将解决在Kaggle竞赛中的犬种识别挑战。比赛的网址是 https://www.kaggle.com/c/dog-breed-identification 在这场竞赛中,试…

css基础知识十二:CSS3常见动画有哪些?实现方式?

一、是什么 CSS动画(CSS Animations)是为层叠样式表建议的允许可扩展标记语言(XML)元素使用CSS的动画的模块 即指元素从一种样式逐渐过渡为另一种样式的过程 常见的动画效果有很多,如平移、旋转、缩放等等&#xff…

python关于字典的操作

https://www.cnblogs.com/RENQIWEI1995/p/7931374.html 最常用的代码举例: dict {Name: Zara, Age: 7, Class: First}keysdict.keys()valuesdict.values()print(keys) #输出键print(values) #输出值 输出&…