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中字符串的格式化方法小结
May 03 Python
python模块简介之有序字典(OrderedDict)
Dec 01 Python
Numpy数组转置的两种实现方法
Apr 17 Python
Django 路由控制的实现代码
Nov 08 Python
500行Python代码打造刷脸考勤系统
Jun 03 Python
Python-while 计算100以内奇数和的方法
Jun 11 Python
PyQt5显示GIF图片的方法
Jun 17 Python
python开发之anaconda以及win7下安装gensim的方法
Jul 05 Python
Python谱减法语音降噪实例
Dec 18 Python
Python中 Global和Nonlocal的用法详解
Jan 20 Python
Python生成器常见问题及解决方案
Mar 21 Python
Python何绘制带有背景色块的折线图
Apr 23 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
《五等分的花嫁》漫画完结!2020年10月第2期TV动画制作组换血!
2020/03/06 日漫
Windows下的PHP5.0安装配制详解
2006/09/05 PHP
PHP 金额数字转换成英文
2010/05/06 PHP
php下连接ftp实现文件的上传、下载、删除文件实例代码
2010/06/03 PHP
ThinkPHP采用实现三级循环代码实例
2014/07/18 PHP
php实现用于验证所有类型的信用卡类
2015/03/24 PHP
php实现分页显示
2015/11/03 PHP
yii2中的rules 自定义验证规则详解
2016/04/19 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
学习YUI.Ext 第七天--关于View&JSONView
2007/03/10 Javascript
HTML中的setCapture和releaseCapture使用介绍
2012/03/21 Javascript
实现点击列表弹出列表索引的两种方式
2013/03/08 Javascript
js弹出层永远居中实现思路及代码
2013/11/29 Javascript
jquery淡入淡出效果简单实例
2016/01/14 Javascript
不得不知的ES6小技巧
2018/07/28 Javascript
JS 正则表达式验证密码、邮箱格式的实例代码
2018/10/28 Javascript
使用jQuery动态设置单选框的选中效果
2018/12/06 jQuery
微信小程序第三方框架对比 之 wepy / mpvue / taro
2019/04/10 Javascript
使用Vue CLI创建typescript项目的方法
2019/08/09 Javascript
Layui给switch添加响应事件的例子
2019/09/03 Javascript
Node 代理访问的实现
2019/09/19 Javascript
基于Vue中的父子传值问题解决
2020/07/27 Javascript
Python工程师面试题 与Python Web相关
2016/01/14 Python
Python 寻找局部最高点的实现
2019/12/05 Python
Django admin管理工具TabularInline类用法详解
2020/05/14 Python
Canvas引入跨域的图片导致toDataURL()报错的问题的解决
2018/09/19 HTML / CSS
四年级学生评语大全
2014/04/21 职场文书
小学生2014国庆节演讲稿:祖国在我心中
2014/09/21 职场文书
党员教师批评与自我批评发言稿
2014/10/15 职场文书
门卫岗位职责
2015/02/09 职场文书
推销搭讪开场白
2015/05/28 职场文书
灵魂歌王观后感
2015/06/17 职场文书
银行培训心得体会范文
2016/01/09 职场文书
2016大学生求职自荐信范文
2016/01/28 职场文书
pytorch Dropout过拟合的操作
2021/05/27 Python