作者wwmm (加油!!!)
看板Python
标题[问题] 练习numpy遇到的问题
时间Wed Feb 13 17:48:36 2013
最近开始学习 python, 主要目的就是为了要学会 numpy.
下面是我遭遇的一个问题:
我分别创造两个 size 为 10 x 10 的 np.ones 矩阵, 并以变数 A, B 绑定.
那我可以得到: A = A + A.T 和 B += B.T 的结果是一致的,
也就是每个元素都是 2.0.
但是当我把 size 变成 100 x 100 时, 跑出来的结果如下:
In [1]: import numpy as np
In [2]: A = np.ones( (100, 100) )
In [3]: A = A + A.T
In [4]: A
Out[4]:
array([[ 2., 2., 2., ..., 2., 2., 2.],
[ 2., 2., 2., ..., 2., 2., 2.],
[ 2., 2., 2., ..., 2., 2., 2.],
...,
[
2., 2., 2., ..., 2., 2., 2.],
[
2., 2., 2., ..., 2., 2., 2.],
[
2., 2., 2., ..., 2., 2., 2.]])
In [5]: B = np.ones( (100, 100) )
In [6]: B += B.T
In [7]: B
Out[7]:
array([[ 2., 2., 2., ..., 2., 2., 2.],
[ 2., 2., 2., ..., 2., 2., 2.],
[ 2., 2., 2., ..., 2., 2., 2.],
...,
[
3., 3., 3., ..., 2., 2., 2.],
[
3., 3., 3., ..., 2., 2., 2.],
[
3., 3., 3., ..., 2., 2., 2.]])
我想请问.... 为什麽会跑出 3.0 啊 @@
谢谢各位的回覆
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 115.165.192.204
1F:→ juiz:你两种写法都有问题,请用 a=a+a.T.copy(); b+=b.T.copy() 02/13 19:23
2F:→ juiz:抱歉,a=a+a.T 会产生中继物件,是没问题的。第二种才有问题 02/13 19:24
3F:→ wwmm:可以请问一下 那我所写的 B += B.T 实际的运算是什麽吗@@ 02/13 19:26
4F:→ wwmm:还有, 顺便请问 第二种写法会发生的问题是什麽啊? 感谢感谢 02/13 19:41
5F:推 kusoayan:应该是当矩阵size变大後 里面用sparse matrix的方式运算 02/13 23:53
6F:→ kusoayan:产生的问题吧? not sure.. 02/13 23:53