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 10 Python
跟老齐学Python之关于类的初步认识
Oct 11 Python
python开发之thread实现布朗运动的方法
Nov 11 Python
Python的包管理器pip更换软件源的方法详解
Jun 20 Python
Python numpy 常用函数总结
Dec 07 Python
wxPython之解决闪烁的问题
Jan 15 Python
Python3 replace()函数使用方法
Mar 19 Python
Python提取支付宝和微信支付二维码的示例代码
Feb 15 Python
Python 计算任意两向量之间的夹角方法
Jul 05 Python
Python hashlib模块加密过程解析
Nov 05 Python
python用TensorFlow做图像识别的实现
Apr 21 Python
python如何实现递归转非递归
Feb 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
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
2015/11/15 PHP
thinkPHP3.2简单实现文件上传的方法
2016/05/16 PHP
如何简单地用YUI做JavaScript动画
2007/03/10 Javascript
javascript 三种编解码方式
2010/02/01 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
JavaScript实现带标题的图片轮播特效
2015/05/20 Javascript
javascript中mouseover、mouseout使用详解
2015/07/19 Javascript
JavaScript实现图片轮播的方法
2015/07/31 Javascript
Actionscript与javascript交互实例程序(修改)
2016/09/22 Javascript
使用BootStrapValidator完成前端输入验证
2016/09/28 Javascript
Javascript 数组去重的方法(四种)详解及实例代码
2016/11/24 Javascript
node.js入门教程之querystring模块的使用方法
2017/02/27 Javascript
Bootstrap模态框插入视频的实现代码
2017/06/25 Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
2019/03/29 Javascript
微信小程序页面间传递数组对象方法解析
2019/11/06 Javascript
JS前端面试必备——基本排序算法原理与实现方法详解【插入/选择/归并/冒泡/快速排序】
2020/02/24 Javascript
vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)
2020/02/25 Javascript
使用Python的Supervisor进行进程监控以及自动启动
2014/05/29 Python
将图片文件嵌入到wxpython代码中的实现方法
2014/08/11 Python
Python中利用sorted()函数排序的简单教程
2015/04/27 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
2020/04/23 Python
python实现画一颗树和一片森林
2018/06/25 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
2018/10/16 Python
Python3内置模块之json编解码方法小结【推荐】
2020/12/09 Python
使用Python实现牛顿法求极值
2020/02/10 Python
PyQt5实现画布小程序
2020/05/30 Python
numpy的Fancy Indexing和array比较详解
2020/06/11 Python
Python中qutip用法示例详解
2020/10/02 Python
你不知道的5个HTML5新功能
2016/06/28 HTML / CSS
桥梁与隧道工程专业本科生求职信
2013/10/08 职场文书
庆中秋节主题活动方案
2014/02/03 职场文书
《赵州桥》教学反思
2014/02/17 职场文书
办公室主任个人对照检查材料思想汇报
2014/10/11 职场文书
2014年人事行政工作总结
2014/12/03 职场文书
社区法制宣传月活动总结
2015/05/07 职场文书
用JS写一个发布订阅模式
2021/11/07 Javascript