python问题解决:TypeError: ufunc 'add' output (typecode 'O') could not be coerced to provided output para

版权声明:如需转载或引用,请注明出处。 https://blog.csdn.net/weixin_39278265/article/details/85148974

前言

本文旨在解决Python运行时出现的这样的报错:
TypeError: ufunc ‘add’ output (typecode ‘O’) could not be coerced to provided output parameter (typecode ‘d’) according to the casting rule ‘‘same_kind’’

1 问题描述

这个错误是怎么产生的呢?
就是在对numpy的dnarray数组使用运算符+=的时候(比如y+=c),如果数组复杂到一定程度,这样的自加运算就会报如上的错。

2 解决方案

百度上基本找不到什么有用的方案,所以这里才简单记录到这个博客,以免后来者走弯路。

实际上,我发现英语还是太重要了,得扎实学,不然错误都不知道是什么。

2.1 首先基本理解错误的意思

ufunc是什么?
python科学计算之numpy——ufunc函数 https://blog.csdn.net/unixtch/article/details/78531585
这里介绍的还是很清楚的。

在这里插入图片描述

'add' output 这里指的自然就是+=的输出了

typecode 'O' 这里表示自加的输出类型是‘O’,我感觉是object类型

could not be coerced to provided output parameter (typecode 'd') 不能强制从’Object’类型转换成‘dnarray’类型。

2.2 找资料

这里写得挺好的,还是比较靠谱的(因为来源于numpy的github网站中的issue,非常给力)

在这里插入图片描述

从这里就可以明白,numpy是因为你在用+=运算的时候,认为你的操作不安全,转换类型不一样,所以报错。

你要想继续运行,就得改用:
np.add(a, b, out=a, casting="unsafe")
这样的形式。(实际上,我把自加y+=c换成y=y+c 或者y=np.add(y, c)都可以,都不会报错。)

其问题描述:
在这里插入图片描述

对应给出的答案:
在这里插入图片描述

故在此算是解决问题了。供参考。

小结

此外,还参考了:

总言之,解决问题是费时间的,如果再熟练英语一点,可能会更快些。因为我感觉python这种编程语言,如果出错了,英文文献才是第一手资料,中文很多翻译过来的存在一定的失真(不准确性)和滞后,而这种失真和滞后性往往又是不可避免的。

所以可以说是很扎心了。

猜你喜欢

转载自blog.csdn.net/weixin_39278265/article/details/85148974
今日推荐