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制作爬虫抓取美女图
Jan 20 Python
深入解析Python中函数的参数与作用域
Mar 20 Python
Python下载指定页面上图片的方法
May 12 Python
Python编写一个优美的下载器
Apr 15 Python
详解Python 协程的详细用法使用和例子
Jun 15 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
Jul 16 Python
python3 pygame实现接小球游戏
May 14 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
Feb 21 Python
Python MySQL 日期时间格式化作为参数的操作
Mar 02 Python
python保留格式汇总各部门excel内容的实现思路
Jun 01 Python
python 基于opencv 实现一个鼠标绘图小程序
Dec 11 Python
Python解析m3u8拼接下载mp4视频文件的示例代码
Mar 03 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
windows xp下安装pear
2006/12/02 PHP
php使用NumberFormatter格式化货币的方法
2015/03/21 PHP
PHP实现图片上传并压缩
2015/12/22 PHP
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
40个有创意的jQuery图片、内容滑动及弹出插件收藏集之一
2011/12/31 Javascript
javascript学习(二)javascript常见问题总结
2013/01/02 Javascript
百度地图api应用标注地理位置信息(js版)
2013/02/01 Javascript
jQuery动画效果实现图片无缝连续滚动
2016/01/12 Javascript
javascript嵌套函数和在函数内调用外部函数的区别分析
2016/01/31 Javascript
Bootstrap框架的学习教程详解(二)
2016/10/18 Javascript
AngularJS控制器之间的通信方式详解
2016/11/03 Javascript
基本DOM节点操作
2017/01/17 Javascript
JavaScript实现两个select下拉框选项左移右移
2017/03/09 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
2017/03/29 jQuery
jQuery正则验证注册页面经典实例
2017/06/10 jQuery
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
vue生成随机验证码的示例代码
2017/09/29 Javascript
Python中标准模块importlib详解
2017/04/16 Python
Django自定义用户认证示例详解
2018/03/14 Python
Python用类实现扑克牌发牌的示例代码
2020/06/01 Python
python 判断一组数据是否符合正态分布
2020/09/23 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
2020/09/29 Python
如何基于matlab相机标定导出xml文件
2020/11/02 Python
python中函数返回多个结果的实例方法
2020/12/16 Python
html5+css如何实现中间大两头小的轮播效果
2018/12/06 HTML / CSS
cosme官方海外旗舰店:日本最大化妆品和美容产品的综合口碑网站
2017/01/18 全球购物
合伙协议书
2014/04/23 职场文书
优秀的个人求职信范文
2014/05/09 职场文书
2014年党员承诺书范文
2014/05/20 职场文书
房地产置业顾问岗位职责
2015/04/11 职场文书
《卖火柴的小女孩》教学反思
2016/02/19 职场文书
Golang 空map和未初始化map的注意事项说明
2021/04/29 Golang
pytorch--之halfTensor的使用详解
2021/05/24 Python
elementui的el-popover修改样式不生效的解决
2021/06/30 Javascript
四十九个javascript小知识实用技巧
2021/11/20 Javascript
Python实现对齐打印 format函数的用法
2022/04/28 Python