测试用例 正则表达式 resultMap Java Spring ipv4 ISP multithreading svg drupal primefaces arduino pip 最新更新国内最快的dns abaqus是什么软件 matlab颜色代码 SketchUp mysql查询 java中的继承 java语言 java自定义异常 python视频教程 碧桂园园宝 jquery下载 centos配置ip ps怎么把人p瘦 仁王木灵全收集 excel箱线图 视频采集软件 机器人走迷宫 小米6拆机 方正小标宋gbk 在线正则表达式测试 cpu天梯图手机 迅捷cad转换器 苹果笔怎么充电 易语言浏览器 mkdir命令 js取余 python转exe 遍历文件夹下所有文件
当前位置: 首页 > 学习教程  > 编程学习

python小坑之深浅拷贝(矩阵行交换)

2021/1/9 2:04:41 文章标签: 深浅拷贝

在做矩阵的行变换的时候,发现赋值会重复 例如矩阵 6 2 3 4 5 6 7 8 9 如果我想第二行与第一行对换, def row_transformation(x):a np.argmin(x[:,0])b x[a,:]c bd x[0,:]x[a,:]dx[0,:]creturn x发现最后结果是 [[6 2 3] [6 2 3] [7 8 9]] 使用debug…

在做矩阵的行变换的时候,发现赋值会重复
例如矩阵
6 2 3
4 5 6
7 8 9
如果我想第二行与第一行对换,

def row_transformation(x):
    a = np.argmin(x[:,0])
    b = x[a,:]
    c = b
    d = x[0,:]
    x[a,:]=d
    x[0,:]=c
    return x

发现最后结果是
[[6 2 3]
[6 2 3]
[7 8 9]]
使用debug查看
发现在把d值赋予第二行的时候,b,c都会被更新为d的值。
后来才发现,是深浅拷贝的原因。
python的赋值只是给了个引用地址,并没有重新创建对象。
id(b)=1957048230096
id©=1957048230096

具体深浅拷贝的区别

def row_transformation(x):
    a = np.argmin(x[:,0])
    b = copy.deepcopy(x[a,:])
    c = copy.deepcopy(x[0,:])
    x[a,:]=c
    x[0,:]=b
    return x

最后完成。
[[4 5 6]
[6 2 3]
[7 8 9]]


本文链接: http://www.dtmao.cc/news_show_1100272.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?