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 字符串中的字符倒转
Sep 06 Python
python将html转成PDF的实现代码(包含中文)
Mar 04 Python
python实现百度关键词排名查询
Mar 30 Python
在Python中使用第三方模块的教程
Apr 27 Python
Python实现LRU算法的2种方法
Jun 24 Python
python logging 日志轮转文件不删除问题的解决方法
Aug 02 Python
Python类属性的延迟计算
Oct 22 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
Oct 15 Python
python scipy求解非线性方程的方法(fsolve/root)
Nov 12 Python
python给视频添加背景音乐并改变音量的具体方法
Jul 19 Python
Python初学者必备的文件读写指南
Jun 23 Python
Python时间操作之pytz模块使用详解
Jun 14 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实现加减法验证码代码
2014/02/14 PHP
CI框架中通过hook的方式实现简单的权限控制
2015/01/07 PHP
php验证邮箱和ip地址最简单方法汇总
2015/10/30 PHP
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
PHP实现生成数据字典功能示例
2018/05/24 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
用JavaScript实现仿Windows关机效果
2007/03/10 Javascript
IE 下的只读 innerHTML
2009/08/21 Javascript
js setTimeout 参数传递使用介绍
2013/08/13 Javascript
浅析offsetLeft,Left,clientLeft之间的区别
2013/11/30 Javascript
js实现按Ctrl+Enter发送效果
2014/09/18 Javascript
JavaScript常用数组算法小结
2016/02/13 Javascript
用原生JS对AJAX做简单封装的实例代码
2016/07/13 Javascript
JS简单获取当前年月日星期的方法示例
2017/02/07 Javascript
js实现日历与定时器
2017/02/22 Javascript
详谈angularjs中路由页面强制更新的问题
2017/04/24 Javascript
Node.JS利用PhantomJs抓取网页入门教程
2017/05/19 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
深入理解js A*寻路算法原理与具体实现过程
2018/12/13 Javascript
[02:51]2014DOTA2 TI小组赛总结中国军团全部进军钥匙球馆
2014/07/15 DOTA
Python写的PHPMyAdmin暴力破解工具代码
2014/08/06 Python
Python实现批量下载文件
2015/05/17 Python
tensorflow中next_batch的具体使用
2018/02/02 Python
keras实现图像预处理并生成一个generator的案例
2020/06/17 Python
意大利体育用品网上商城:Nencini Sport
2016/08/18 全球购物
Nip + Fab官网:英国美容品牌
2019/08/26 全球购物
物业电工岗位职责
2013/11/20 职场文书
歌唱比赛获奖感言
2014/01/21 职场文书
篮球比赛口号
2014/06/10 职场文书
员工培训协议书
2014/09/15 职场文书
2014年政风行风工作总结
2014/11/22 职场文书
学生逃课万能检讨书2000字
2015/02/17 职场文书
志愿者工作心得体会
2016/01/15 职场文书
高中数学课堂教学反思
2016/02/18 职场文书
2019年亲子运动会口号
2019/10/11 职场文书
redis数据一致性的实现示例
2022/03/18 Redis