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导入oracle数据的方法
Jul 10 Python
Python中的FTP通信模块ftplib的用法整理
Jul 08 Python
举例讲解Python编程中对线程锁的使用
Jul 12 Python
Python 网页解析HTMLParse的实例详解
Aug 10 Python
Django admin美化插件suit使用示例
Dec 12 Python
django 删除数据库表后重新同步的方法
May 27 Python
在dataframe两列日期相减并且得到具体的月数实例
Jul 03 Python
在Python dataframe中出生日期转化为年龄的实现方法
Oct 20 Python
Python3标准库glob文件名模式匹配的问题
Mar 13 Python
Python参数传递机制传值和传引用原理详解
May 22 Python
Python sorted对list和dict排序
Jun 09 Python
Python爬取12306车次信息代码详解
Aug 12 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 5.0对象模型深度探索之绑定
2006/09/05 PHP
smarty的保留变量问题
2008/10/23 PHP
通过dbi使用perl连接mysql数据库的方法
2014/04/16 PHP
PHP的PDO预处理语句与存储过程
2019/01/27 PHP
详解PHP队列的实现
2019/03/14 PHP
教你如何解密js/vbs/vbscript加密的编码异处理小结
2008/06/25 Javascript
js控制框架刷新
2008/08/01 Javascript
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
用JQUERY增删元素的代码
2012/02/14 Javascript
YUI Compressor压缩JavaScript原理及微优化
2013/01/07 Javascript
如何使用JS获取IE上传文件路径(IE7,8)
2013/07/08 Javascript
js如何取消事件冒泡
2013/09/23 Javascript
jquery插件之文字间歇自动向上滚动效果代码
2016/02/25 Javascript
jQuery实现页面下拉100像素出现悬浮窗口的方法
2016/09/05 Javascript
微信小程序 request接口的封装实例代码
2017/04/26 Javascript
React+react-dropzone+node.js实现图片上传的示例代码
2017/08/23 Javascript
捕获未处理的Promise错误方法
2017/10/13 Javascript
微信小程序 scroll-view实现锚点滑动的示例
2017/12/06 Javascript
Vue精简版风格概述
2018/01/30 Javascript
解决vue路由后界面没有变化,但是链接有的问题
2018/09/01 Javascript
详解微信小程序缓存--缓存时效性
2019/05/02 Javascript
Express 配置HTML页面访问的实现
2020/11/01 Javascript
python单元测试unittest实例详解
2015/05/11 Python
Python 实现简单的电话本功能
2015/08/09 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
2018/04/23 Python
python通过Windows下远程控制Linux系统
2018/06/20 Python
Pandas将列表(List)转换为数据框(Dataframe)
2020/04/24 Python
Django中文件上传和文件访问微项目的方法
2020/04/27 Python
全球地下的服装和态度:Slam Jam
2018/02/04 全球购物
英国设计的甲板鞋和船鞋:Chatham
2018/12/06 全球购物
毕业生机械建模求职信
2013/10/14 职场文书
企业申诉管理制度
2014/01/30 职场文书
新年晚会主持词
2014/03/24 职场文书
2014年党员创先争优承诺书
2014/05/29 职场文书
干部考核工作总结
2015/08/12 职场文书
《静夜思》教学反思
2016/02/17 职场文书