python关于矩阵重复赋值覆盖问题的解决方法


Posted in Python onJuly 19, 2019

本文实例讲述了python关于矩阵重复赋值覆盖问题的解决方法。分享给大家供大家参考,具体如下:

import itertools
import numpy as np
comb = list(itertools.combinations(list(range(regions)), 2))
bands_info = []
coeff = np.zeros([bands, len(comb)])
for cla in range(classes):
  class_info = data[:,cla*bands*regions:(cla+1)*bands*regions]
  for bs in range(bands):
    n = bs*regions
    for i in range(len(comb)):
      index1 = comb[i][0]+n
      index2 = comb[i][1]+n
      part1 = class_info[:, index1]
      part2 = class_info[:, index2]
      coeff[bs, i] = (np.corrcoef(part1, part2))[0, 1]
  bands_info.append(coeff.reshape([1,-1]))
coeff_info = np.vstack((bands_info[0], bands_info[1], bands_info[2],bands_info[3]))

例如这个循环赋值过程,最终得出来的结果是bands_info这个List里面每一个矩阵都是一样的,这是为什么呢?我一开始也在这里纠结了很长时间,思来想去感觉没错的呀。后来想想以前学的C语言知识,才有点明白。原来python里面有浅层copy和深层copy这一说,同是一个矩阵的话占用的是同一个地址,在里面进行重复赋值的话前面的值都会被覆盖掉。不只是当前变量被覆盖掉,就是你之后用到这个变量的也会被覆盖。比如说你a的变量被b覆盖了,那你后面用到a的变量的地方,a的值也会变成b的值。是不是很可怕。

那么应该怎么进行修改呢?

import itertools
import numpy as np
comb = list(itertools.combinations(list(range(regions)), 2))
bands_info = []
for cla in range(classes):
  coeff = np.zeros([bands, len(comb)])
  class_info = data[:,cla*bands*regions:(cla+1)*bands*regions]
  for bs in range(bands):
    n = bs*regions
    for i in range(len(comb)):
      index1 = comb[i][0]+n
      index2 = comb[i][1]+n
      part1 = class_info[:, index1]
      part2 = class_info[:, index2]
      coeff[bs, i] = (np.corrcoef(part1, part2))[0, 1]
  bands_info.append(coeff.reshape([1,-1]))
coeff_info = np.vstack((bands_info[0], bands_info[1], bands_info[2],bands_info[3]))

改成这样就可以了。就是将初始矩阵在循环里在重新设定一遍,意思相当就是给了一次新的地址,再进行复制的话就不会覆盖前面的结果了。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python调用短信猫控件实现发短信功能实例
Jul 04 Python
python中global用法实例分析
Apr 30 Python
详解python string类型 bytes类型 bytearray类型
Dec 16 Python
python生成圆形图片的方法
Mar 25 Python
python清除字符串中间空格的实例讲解
May 11 Python
Python实现获取邮箱内容并解析的方法示例
Jun 16 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
Jul 30 Python
基于树莓派的语音对话机器人
Jun 17 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
Aug 04 Python
Python中的self用法详解
Aug 06 Python
python3 简单实现组合设计模式
Jul 02 Python
python单元测试之pytest的使用
Jun 07 Python
对Python生成器、装饰器、递归的使用详解
Jul 19 #Python
django中SMTP发送邮件配置详解
Jul 19 #Python
对Python函数设计规范详解
Jul 19 #Python
在django view中给form传入参数的例子
Jul 19 #Python
使用Python制作表情包实现换脸功能
Jul 19 #Python
解决Django一个表单对应多个按钮的问题
Jul 18 #Python
Django工程的分层结构详解
Jul 18 #Python
You might like
phpmyadmin 常用选项设置详解版
2010/03/07 PHP
Session服务器配置指南与使用经验的深入解析
2013/06/17 PHP
PHP yii实现model添加默认值的方法(两种方法)
2016/11/10 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
php+layui数据表格实现数据分页渲染代码
2019/10/26 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
java script编程起步(第三课)
2007/01/10 Javascript
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
2013/02/04 Javascript
使用jquery实现简单的ajax
2013/07/08 Javascript
Jquery取得iframe下内容的方法
2013/11/18 Javascript
jQuery窗口、文档、网页各种高度的精确理解
2014/07/02 Javascript
Javascript学习笔记之 函数篇(三) : 闭包和引用
2014/11/23 Javascript
ANGULARJS中用NG-BIND指令实现单向绑定的例子
2014/12/08 Javascript
使用Javascript写的2048小游戏
2015/11/25 Javascript
基于jquery实现动态竖向柱状条特效
2016/02/12 Javascript
基于jQuery代码实现圆形菜单展开收缩效果
2017/02/13 Javascript
Vue实现active点击切换方法
2018/03/16 Javascript
layui获取选中行数据的实例讲解
2018/08/19 Javascript
解决vue props 拿不到值的问题
2018/09/11 Javascript
JS实现排行榜文字向上滚动轮播效果
2019/11/26 Javascript
ES5 模拟 ES6 的 Symbol 实现私有成员功能示例
2020/05/06 Javascript
对python list 遍历删除的正确方法详解
2018/06/29 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
2020/05/27 Python
python获取网络图片方法及整理过程详解
2019/12/20 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
英国IT硬件供应商,定制游戏PC:Mesh Computers
2019/03/28 全球购物
马来西亚在线购物市场:PGMall.my
2019/10/13 全球购物
android面试问题与答案
2016/12/27 面试题
医药营销专业个人自荐信
2013/09/29 职场文书
药学专业学生的自我评价分享
2014/02/06 职场文书
护士毕业生自荐信
2014/02/07 职场文书
《孔繁森》教学反思
2014/04/17 职场文书
2014年乡镇工作总结
2014/11/21 职场文书
求职信如何撰写?
2019/05/22 职场文书
关于pytest结合csv模块实现csv格式的数据驱动问题
2022/05/30 Python
在ubuntu下安装go开发环境的全过程
2022/08/05 Golang