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标准算法实现数组全排列的方法
Mar 17 Python
使用Python的Django框架实现事务交易管理的教程
Apr 20 Python
详解python如何调用C/C++底层库与互相传值
Aug 10 Python
python画出三角形外接圆和内切圆的方法
Jan 25 Python
Python实现的爬取网易动态评论操作示例
Jun 06 Python
pycharm在调试python时执行其他语句的方法
Nov 29 Python
Python实现SQL注入检测插件实例代码
Feb 02 Python
Python制作微信好友背景墙教程(附完整代码)
Jul 17 Python
如何用Python来搭建一个简单的推荐系统
Aug 07 Python
Pytorch 实现focal_loss 多类别和二分类示例
Jan 14 Python
基于python实现模拟数据结构模型
Jun 12 Python
python获取百度热榜链接的实例方法
Aug 25 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/03/02 国漫
文件上传类
2006/10/09 PHP
第4章 数据处理-php正则表达式-郑阿奇(续)
2011/07/04 PHP
php对二维数组按指定键值key排序示例代码
2013/11/26 PHP
php提示Failed to write session data错误的解决方法
2014/12/17 PHP
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
PHP 7.4 新语法之箭头函数实例详解
2019/05/09 PHP
Ext面向对象开发实践(续)
2008/11/18 Javascript
Jquery拖拽并简单保存的实现代码
2010/11/28 Javascript
jquery ui dialog ie8出现滚动条的解决方法
2010/12/06 Javascript
用jquery实现输入框获取焦点消失文字
2013/04/27 Javascript
JavaScript数据库TaffyDB用法实例分析
2015/07/27 Javascript
Bootstrap每天必学之按钮(一)
2015/11/24 Javascript
详解javascript传统方法实现异步校验
2016/01/22 Javascript
Bootstrap框架下下拉框select搜索功能
2020/03/26 Javascript
JavaScript无缝滚动效果的实例代码
2017/03/27 Javascript
vue-router重定向和路由别名的使用讲解
2019/01/19 Javascript
JavaScript如何处理移动端拍摄图片旋转问题
2019/11/16 Javascript
Python中使用platform模块获取系统信息的用法教程
2016/07/08 Python
Python实现将照片变成卡通图片的方法【基于opencv】
2018/01/17 Python
Python实现的ftp服务器功能详解【附源码下载】
2019/06/26 Python
TensorFlow实现批量归一化操作的示例
2020/04/22 Python
Python操控mysql批量插入数据的实现方法
2020/10/27 Python
python 爬虫请求模块requests详解
2020/12/04 Python
python xlsxwriter模块的使用
2020/12/24 Python
RentCars.com巴西:汽车租赁网站
2016/08/22 全球购物
Nike台湾官方商店:Nike.com (TW)
2017/08/16 全球购物
联想德国官网:Lenovo Germany
2018/07/04 全球购物
副护士长竞聘演讲稿
2014/04/30 职场文书
企业演讲稿范文大全
2014/05/20 职场文书
2014年个人技术工作总结
2014/12/08 职场文书
上班迟到检讨书
2015/05/06 职场文书
热爱劳动主题班会
2015/08/14 职场文书
学会掌握自己命运的十条黄金法则:
2019/08/08 职场文书
Matplotlib绘制混淆矩阵的实现
2021/05/27 Python
Python 视频画质增强
2022/04/28 Python