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中重载isinstance继承关系的问题
May 04 Python
Python中的heapq模块源码详析
Jan 08 Python
在Pycharm中将pyinstaller加入External Tools的方法
Jan 16 Python
django基础学习之send_mail功能
Aug 07 Python
Django对models里的objects的使用详解
Aug 17 Python
python画微信表情符的实例代码
Oct 09 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
Nov 19 Python
python创建ArcGIS shape文件的实现
Dec 06 Python
在Python中用GDAL实现矢量对栅格的切割实例
Mar 11 Python
Python脚本破解压缩文件口令实例教程(zipfile)
Jun 14 Python
Pytorch实现将模型的所有参数的梯度清0
Jun 24 Python
Python学习开发之图形用户界面详解
Aug 23 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
PHP Global变量定义当前页面的全局变量实现探讨
2013/06/05 PHP
PHP生成不同颜色、不同大小的tag标签函数
2013/09/23 PHP
CI框架中cookie的操作方法分析
2014/12/12 PHP
浅谈thinkphp5 instance 的简单实现
2017/07/30 PHP
JavaScript 解析Json字符串的性能比较分析代码
2009/12/16 Javascript
dojo学习第一天 Tab选项卡 实现
2011/08/28 Javascript
Jquery动态改变图片IMG的src地址示例
2013/06/25 Javascript
使用javascript实现ListBox左右全选,单选,多选,全请
2013/11/07 Javascript
浅谈JavaScript函数节流
2014/12/09 Javascript
JS实现仿Windows7风格的网页右键菜单效果代码
2015/09/11 Javascript
每天一篇javascript学习小结(属性定义方法)
2015/11/19 Javascript
Bootstrap安装环境配置教程分享
2016/05/27 Javascript
JavaScript实现阿拉伯数字和中文数字互相转换
2016/06/12 Javascript
JavaScript学习笔记--常用的互动方法
2016/12/07 Javascript
BootStrap 弹出层代码
2017/02/09 Javascript
vue中子组件调用兄弟组件方法
2018/07/06 Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
2018/08/10 Javascript
微信小程序使用wxParse解析html的实现示例
2018/08/30 Javascript
angularjs实现table表格td单元格单击变输入框/可编辑状态示例
2019/02/21 Javascript
微信小程序新手教程之页面打开数量限制
2019/03/03 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
2019/11/06 Javascript
解决Layui 表格自适应高度的问题
2019/11/15 Javascript
jquery使用echarts实现有向图可视化功能示例
2019/11/25 jQuery
javascript实现简易数码时钟
2020/03/30 Javascript
Element InfiniteScroll无限滚动的具体使用方法
2020/07/27 Javascript
Python标准库urllib2的一些使用细节总结
2015/03/16 Python
python中异常捕获方法详解
2017/03/03 Python
利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统
2019/09/25 Python
Python Pillow(PIL)库的用法详解
2020/09/19 Python
美国最好的保健品打折网店:Swanson
2017/08/04 全球购物
医生实习工作总结的自我评价
2013/09/27 职场文书
集团公司总经理岗位职责
2013/12/20 职场文书
初中军训感想300字
2014/03/05 职场文书
乡镇群众路线整改落实情况汇报
2014/10/28 职场文书
事业单位聘任报告
2015/03/02 职场文书
六一儿童节致辞
2015/07/31 职场文书