PyCharm中执行np.equal(Numpy)报错?本地Python环境可正常运行
Numpy
np.equal 类型匹配报错排查 问题代码
import numpy as np s="aabaaaacaabc" m=np.array( [ list( s ) ] * 3 ) print("m", m ) l=np.array([['a'],['b'],['c']] ) print( "l", l ) x = np.equal( m, l )
报错信息
C:\Users\marka\AppData\Local\Microsoft\WindowsApps\python3.10.exe "C:\Users\marka\Leet Notebooks\.ipynb_checkpoints\NumpyQuestion.py" m [['a' 'a' 'b' 'a' 'a' 'a' 'a' 'c' 'a' 'a' 'b' 'c'] ['a' 'a' 'b' 'a' 'a' 'a' 'a' 'c' 'a' 'a' 'b' 'c'] ['a' 'a' 'b' 'a' 'a' 'a' 'a' 'c' 'a' 'a' 'b' 'c']] l [['a'] ['b'] ['c']] Traceback (most recent call last): File "C:\Users\marka\Leet Notebooks\.ipynb_checkpoints\NumpyQuestion.py", line 7, in <module> x = np.equal( m, l ) numpy.core._exceptions._UFuncNoLoopError: ufunc 'equal' did not contain a loop with signature matching types (<class 'numpy.dtype[str_]'>, <class 'numpy.dtype[str_]'>) -> None Process finished with exit code
问题原因
不是PyCharm的特殊设置导致的,而是PyCharm使用的Python环境与你其他环境的Numpy版本不一致。你当前PyCharm调用的是Windows系统自带的Python(路径C:\Users\marka\AppData\Local\Microsoft\WindowsApps\python3.10.exe),这个环境中的Numpy版本较低,对字符串数组的广播比较支持不完善。而你其他能正常运行代码的环境,Numpy版本更新,已经修复了这类字符串 dtype 的匹配问题。
解决方法
- 升级当前环境的Numpy:
打开PyCharm终端,执行命令:pip install --upgrade numpy - 显式指定统一的字符串 dtype:
创建数组时指定相同的字符串类型,避免 dtype 不匹配:import numpy as np s="aabaaaacaabc" m=np.array( [ list( s ) ] * 3, dtype='U1' ) print("m", m ) l=np.array([['a'],['b'],['c']], dtype='U1' ) print( "l", l ) x = np.equal( m, l ) - 切换PyCharm的Python解释器:
在PyCharm中设置使用你其他能正常运行代码的Python环境(比如Anaconda环境或单独安装的Python解释器),操作路径:File > Settings > Project: xxx > Python Interpreter,选择已安装高版本Numpy的解释器。
内容的提问来源于stack exchange,提问作者Mark Lavin
相关产品推荐
相关产品推荐

