Python中matrix计算小问题
来源:互联网 发布:百度云管家mac下载 编辑:程序博客网 时间:2024/06/18 18:16
今天在敲别人代码的过程中遇到了一个这样的问题:
代码是:
erros = mat(target)-mat(output) # 计算误差-误差函数
错误是:
TypeError: unsupported operand type(s) for -: 'matrix' and 'matrix'
很奇怪既然类型都是matrix,怎么会不能用减操作?
我输出了两个矩阵的类型和形状:
(<class 'numpy.matrixlib.defmatrix.matrix'>, (100L, 1L), <class 'numpy.matrixlib.defmatrix.matrix'>, (100L, 1L))
也完全一致。甚至我将他们转为array, 也不能用减操作
于是我写了一个循环来做它们单个元素之间的减法:
for i in range(shape(target)[0]): for j in range(shape(target)[1]): erros[i, j] = float(target[i, j]) - output[i, j]
终于看到不一样的错误提示:
TypeError: unsupported operand type(s) for -: 'numpy.string_' and 'numpy.float64'
原来是矩阵单个元素的类型不一致,转换类型,解决问题!
所以在此提醒大家,遇到这种奇怪的同类型不能做运算的错误提示时考虑他们的子元素类型是否一致!
当然希望大家都不会遇到这种弱智bug..........
之所以会出现这个bug, 是因为output矩阵内,元素类型自动转换的原因。
output[:,0] =1 # 矩阵第一列全为1->b
output[:,1:]=dataSet[:,:-1] # 第二列到倒数第二列保持原数据,最后一列被删除这里的dataMat最后被赋给了output
在进行这个操作之前output和target的子元素变量类型是一致的,<type 'numpy.string_'>
这个操作之后output的子元素类型变为<type 'numpy.float64'>
所以,是这条语句改变了output的变量类型:
output[:,0] =1
0 0
- Python中matrix计算小问题
- Java中计算时间差的小问题
- python 小计算
- python中遇到的小问题
- python中遇到的小问题
- Python 中遇到的小问题
- 云计算项目中遇到erlang的几个小问题
- 云计算项目中遇到erlang的几个小问题
- 关于Matrix在项目中出现过的一些小问题
- Python 小案例 计算个人所得税
- python中array和matrix的区别
- Python中flatten( ),matrix.A用法
- python中list、array、matrix辨析
- Python中flatten,matrix.A用法
- python小问题
- Python小问题总结
- python小问题整合
- python 的django中遇到的小问题(一)
- 常用的读取配置文件的方法(一)
- 后期屏幕渲染特效
- PHP JSON_ENCODE 不转义中文汉字的方法
- maven 多模块依赖报 java.lang.NoClassDefFoundError
- Spring介绍
- Python中matrix计算小问题
- 二张图片叠加到一起
- 文章标题
- 数据库(第一范式,第二范式,第三范式)
- FormData表单数据对象(h5)快速收集表单信息(注册登录时使用的)
- ABP实时服务-通知系统.发布模式
- Java多线程之~~~synchronized添加参数来实现独立的代码片段
- 217. Contains Duplicate Add to List(C++)
- 关于webstorm开发angular遇到的一些小问题(强迫症喜欢的)