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 Property属性的2种用法
Jun 21 Python
Python中的模块导入和读取键盘输入的方法
Oct 16 Python
Python爬虫代理IP池实现方法
Jan 05 Python
python+requests+unittest API接口测试实例(详解)
Jun 10 Python
python连接数据库的方法
Oct 19 Python
python调用百度REST API实现语音识别
Aug 30 Python
python实现整数的二进制循环移位
Mar 08 Python
python+os根据文件名自动生成文本
Mar 21 Python
python3实现二叉树的遍历与递归算法解析(小结)
Jul 03 Python
python爬虫神器Pyppeteer入门及使用
Jul 13 Python
PyCharm GUI界面开发和exe文件生成的实现
Mar 04 Python
Python matplotlib可视化之绘制韦恩图
Feb 24 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
深入浅析PHP7.0新特征(五大新特征)
2015/10/29 PHP
thinkphp集成前端脚手架Vue-cli的教程图解
2018/08/30 PHP
javascript学习笔记(十九) 节点的操作实现代码
2012/06/20 Javascript
jquery1.9 下检测浏览器类型和版本的方法
2013/12/26 Javascript
NodeJS学习笔记之Http模块
2015/01/13 NodeJs
JavaScript自定义等待wait函数实例分析
2015/03/23 Javascript
跟我学习JScript的Bug与内存管理
2015/11/18 Javascript
快速学习AngularJs HTTP响应拦截器
2015/12/31 Javascript
JS控制弹出悬浮窗口(一览画面)的实例代码
2016/05/30 Javascript
Bootstrap轮播插件简单使用方法介绍
2016/06/21 Javascript
Vue 过渡实现轮播图效果
2017/03/27 Javascript
JS实现的文字间歇循环滚动效果完整示例
2018/02/13 Javascript
js 压缩图片的示例(只缩小体积,不更改图片尺寸)
2020/10/21 Javascript
Python爬虫模拟登录带验证码网站
2016/01/22 Python
Python 详解基本语法_函数_返回值
2017/01/22 Python
Python正确重载运算符的方法示例详解
2017/08/27 Python
Python 反转字符串(reverse)的方法小结
2018/02/20 Python
python3实现基于用户的协同过滤
2018/05/31 Python
Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】
2018/07/12 Python
Pytorch 多维数组运算过程的索引处理方式
2019/12/27 Python
Python实现AI自动抠图实例解析
2020/03/05 Python
Django 实现 Websocket 广播、点对点发送消息的代码
2020/06/03 Python
Python Django路径配置实现过程解析
2020/11/05 Python
python3从网络摄像机解析mjpeg http流的示例
2020/11/13 Python
详解HTML5布局和HTML5标签
2020/10/26 HTML / CSS
捷克钓鱼用品网上商店:Parys.cz
2018/06/15 全球购物
金蝶的一道SQL笔试题
2012/12/18 面试题
教学改革实施方案
2014/03/31 职场文书
党委书记群众路线对照检查材料思想汇报
2014/10/04 职场文书
2014光棍节大学生联谊活动方案
2014/10/10 职场文书
2014年园林绿化工作总结
2014/12/11 职场文书
2015年秋学期师德师风建设工作总结
2015/10/23 职场文书
离婚起诉书范文2016
2015/11/26 职场文书
《观潮》教学反思
2016/02/17 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
详解JAVA的控制语句
2021/11/11 Java/Android