本文旨在解决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这种编程语言,如果出错了, 英文文献才是第一手资料,中文很多翻译过来的存在一定的失真(不准确性)和滞后,而这种失真和滞后性往往又是不可避免的。

所以可以说是很扎心了。

python问题解决:TypeError: ufunc 'add' output (typecode 'O') could not be coerced to provided output para 前言本文旨在解决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 问题描述这个错误是怎么产生的呢... File "sample.py", line 81, in <module> sample_stroke() File "sample.py", line 42, in sample_stroke [strokes, para ms] = model.sample(sample_args.sample_lengt sqrt中的两个参数表示:将对于第一个参数的计算结果赋值给第二个参数。 上文中的例子,输出结果为:[0. 1. 1.41421356 1.73205081 2. 2.23606798 2.44948974 2.64575131] 这时就有两个 问题 ,即:
解决 错误numpy.core._exceptions.U Func TypeError : Cannot cast u func add output from d type (‘float64‘) to d
之前几节主要学了了ndarray的创建,打印等,但是远远不够,学习numpy本质上是为了使我们算法能够快速实现得到验证,ndarray当然也支持常用的加、减、乘、除基本操作。 ndarray的加减乘除操作是按照数组中的像素进行操作,而不是进行矩阵的操作,本质上是产生一个新的数组并填充上计算的结果 加减法为元素之间的操作,即为元素的加减 使用范例: import numpy as...
解决 numpy.core._exceptions.U Func TypeError : u func add ‘ did not contain a loop with signature matchin 问题
最近在测试分销的项目,每次手动计算分销员的佣金,感觉特别麻烦,所以想着用 python 来实现自动计算佣金,但是在计算过程中遇到一个 问题 ,如下: 问题 描述 如图,在佣金矩阵计算相加的时候, numpy 抛了一个异常,这个异常在网上也没有找到相关资料。 于是我打断点看了一下,发现在计算的时候, list 中的数据,返回的是 str 类型,导致矩阵相加的时候,计算失败了。 然后我又去看了一下自己写的佣金计算规则的代码,需求中有个如果佣金金额大于两位小数的时候,会将数据四舍五入保留两位小数,但是保留两位小数
1、BrokenPipeError: [Errno 32] Broken pipe 该 问题 的产生是由于windows下多线程的 问题 ,和DataLoader类有关。通过修改***num_works参数为 0*** ,只启用一个主进程加载数据集,避免在windows使用多线程即可。
【背景】keras中ImageDataGenerator使用image crop来进行数据增强,参考:https://blog.csdn.net/u012348774/article/details/78612869 【报错】 TypeError : Cannot cast u func add output from d type ('float64') to d type ('uint8') with c...
问题 原因:就是因为函数代码中与文件地址相关的字符串定义中出现了字符串与Series相加的情况,导致了该 问题 的出现,可以通过发现并规避这种情况让这种报错消失 当我们在进行单变量统计时,最常用的图标就是直方图,而由于需要对多个文件分别进行绘图可视化,因此,想到使用定义函数来简化工作量,而这里 要介绍的 问题 就是我在完成这个任务过程中发现的; 报错的具体信息: numpy.core._exceptions.U Func TypeError : u func add ’ did not contain a loop
result_AR = model.fit(disp=-1) plt.plot(ts_log_diff) plt.plot(result_AR.fittedvalues, color='red') plt.title('AR model RSS:%.4f' % sum(result_AR.fitte...