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中的list列表及其切片和迭代操作
Mar 13 Python
python利用拉链法实现字典方法示例
Mar 25 Python
Python编程实现的简单神经网络算法示例
Jan 26 Python
详解Python3.6安装psutil模块和功能简介
May 30 Python
Python之列表的插入&替换修改方法
Jun 28 Python
Python简单爬虫导出CSV文件的实例讲解
Jul 06 Python
Python socket实现多对多全双工通信的方法
Feb 13 Python
对Python3 序列解包详解
Feb 16 Python
centos 安装Python3 及对应的pip教程详解
Jun 28 Python
python logging日志模块原理及操作解析
Oct 12 Python
python-numpy-指数分布实例详解
Dec 07 Python
Python @property装饰器原理解析
Jan 22 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
环境会对咖啡种植有什么影响
2021/03/03 咖啡文化
PHP与SQL注入攻击防范小技巧
2011/09/16 PHP
php防注入及开发安全详细解析
2013/08/09 PHP
PHP实现转盘抽奖算法分享
2020/04/15 PHP
PHP实现二维数组中的查找算法小结
2018/06/09 PHP
PHP设计模式之模板方法模式实例浅析
2018/12/20 PHP
一句话JavaScript表单验证代码
2009/08/02 Javascript
jquery.validate使用攻略 第二部
2010/07/01 Javascript
javascript 触发HTML元素绑定的函数
2010/09/11 Javascript
JavaScript中字符串分割函数split用法实例
2015/04/07 Javascript
jQuery简单tab切换效果实现方法
2015/04/08 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
js面向对象实现canvas制作彩虹球喷枪效果
2016/09/24 Javascript
jQuery实现jQuery-form.js实现异步上传文件
2017/04/28 jQuery
Node.js Buffer模块功能及常用方法实例分析
2019/01/05 Javascript
React 实现车牌键盘的示例代码
2019/12/20 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
2020/05/23 Javascript
vue 内联样式style中的background用法说明
2020/08/05 Javascript
[01:06:30]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第二场 1月9日
2021/03/11 DOTA
python检查字符串是否是正确ISBN的方法
2015/07/11 Python
Python HTTP客户端自定义Cookie实现实例
2017/04/28 Python
python嵌套字典比较值与取值的实现示例
2017/11/03 Python
解决IDEA 的 plugins 搜不到任何的插件问题
2020/05/04 Python
python中if及if-else如何使用
2020/06/02 Python
基于Python实现下载网易音乐代码实例
2020/08/10 Python
python环境搭建和pycharm的安装配置及汉化详细教程(零基础小白版)
2020/08/19 Python
船餐厅和泰晤士河餐饮游轮:Bateaux London
2018/03/19 全球购物
Lulu Guinness露露·吉尼斯官网:红唇包
2019/02/03 全球购物
会计实习生自我鉴定
2013/12/12 职场文书
趣味运动会活动方案
2014/02/12 职场文书
团结演讲稿范文
2014/05/23 职场文书
团党委领导干部党的群众路线教育实践活动个人对照检查材料思想汇
2014/10/05 职场文书
经理助理岗位职责
2015/02/02 职场文书
会计简历自我评价
2015/03/10 职场文书
请病假条范文
2015/08/17 职场文书
青年教师听课心得体会
2016/01/15 职场文书