python 矩阵赋值问题

下面是我的代码。请问为什么会这样?我应该如何实现matmap。python矩阵(列表之列表)的列似乎黏在一起。>>>defhardlim(x):ifx<0:return0... 下面是我的代码。请问为什么会这样?我应该如何实现 matmap。python 矩阵(列表之列表)的列似乎黏在一起。
>>> def hardlim(x):
if x<0:
return 0
else:
return 1

>>> from numpy import *
>>> def matmap(A,f):
A=array(A)
m=len(A)
n=len(A[0])
C=[[0]*n]*m
for k in range(m):
for l in range(n):
C[k][l]=f(A[k][l])
return mat(C)

>>> A=array([[-1,1],[-1,1]])
>>> B=matmap(A,hardlim)
>>> B
matrix([[0, 1],
[0, 1]])
>>> A=array([[-1,-1],[1,1]])
>>> B=matmap(A,hardlim)
>>>
>>> B
matrix([[1, 1],
[1, 1]])
展开
 我来答
快乐V美天
2014-12-30 · TA获得超过132个赞
知道答主
回答量:29
采纳率:0%
帮助的人:31.7万
展开全部
问题出在 C=[[0]*n]*m 假若n=2 m=2 C=[[0,0],[0,0]] 用id函数查看C[0]和C[1]的id值是一样的。在内存中享有共同的区域,导致 列黏在一起。 列表* m的方式起始应该属于浅复制,得到的列表 在内存中占同一空间,即id值 一样。你可以看一下浅复制和深复制

把 C=[[0]*n]*m 改为 empty_like(A) 就可以啦
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式