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 相关文章推荐
web.py获取上传文件名的正确方法
Aug 26 Python
Python实现扫描局域网活动ip(扫描在线电脑)
Apr 28 Python
python3+PyQt5实现自定义流体混合窗口部件
Apr 24 Python
Python 16进制与中文相互转换的实现方法
Jul 09 Python
使用Python如何测试InnoDB与MyISAM的读写性能
Sep 18 Python
Pycharm中切换pytorch的环境和配置的教程详解
Mar 13 Python
pandas 强制类型转换 df.astype实例
Apr 09 Python
什么是Python中的匿名函数
Jun 02 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
Jun 12 Python
django rest framework 自定义返回方式
Jul 12 Python
Python 可视化神器Plotly详解
Dec 26 Python
pytorch中的numel函数用法说明
May 13 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
深入了解php4(2)--重访过去
2006/10/09 PHP
ThinkPHP查询语句与关联查询用法实例
2014/11/01 PHP
php验证码生成代码
2015/11/11 PHP
PHP进程通信基础之信号
2017/02/19 PHP
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
新浪微博字数统计 textarea字数统计实现代码
2011/08/28 Javascript
Js表格万条数据瞬间加载实现代码
2014/02/20 Javascript
详解Javascript ES6中的箭头函数(Arrow Functions)
2016/08/24 Javascript
解决vue.js在编写过程中出现空格不规范报错的问题
2017/09/20 Javascript
JS实现手写parseInt的方法示例
2017/09/24 Javascript
Vue自定义指令封装节流函数的方法示例
2018/07/09 Javascript
node.js中express模块创建服务器和http模块客户端发请求
2019/03/06 Javascript
详解JavaScript 为什么要有 Symbol 类型?
2019/04/03 Javascript
微信小程序与公众号卡券/会员打通的问题
2019/07/25 Javascript
基于layui table返回的值的多级嵌套的解决方法
2019/09/19 Javascript
js实现整体缩放页面适配移动端
2020/03/31 Javascript
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
2017/09/06 Python
Python实现的归并排序算法示例
2017/11/21 Python
django 信号调度机制详解
2019/07/19 Python
Pandas数据分析的一些常用小技巧
2021/02/07 Python
CSS3 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
2013/06/06 HTML / CSS
Html5新增标签有哪些
2017/04/13 HTML / CSS
Steve Madden官网:美国鞋类品牌
2017/01/29 全球购物
失业者真诚求职信范文
2013/12/25 职场文书
后勤主管岗位职责
2014/03/01 职场文书
2014两会优秀的心得体会范文
2014/03/17 职场文书
国际会计专业求职信
2014/08/04 职场文书
党员教师群众路线思想汇报范文
2014/10/28 职场文书
学校党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
通知的格式范文
2015/04/27 职场文书
党员干部廉政承诺书
2015/04/28 职场文书
亮剑精神观后感
2015/06/05 职场文书
毕业酒会致辞
2015/07/29 职场文书
演讲开头怎么书写?
2019/08/06 职场文书
从np.random.normal()到正态分布的拟合操作
2021/06/02 Python
Java数据结构之堆(优先队列)
2022/05/20 Java/Android