作者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
→ juiz:你兩種寫法都有問題,請用 a=a+a.T.copy(); b+=b.T.copy() 02/13 19:23
→ juiz:抱歉,a=a+a.T 會產生中繼物件,是沒問題的。第二種才有問題 02/13 19:24
→ wwmm:可以請問一下 那我所寫的 B += B.T 實際的運算是什麼嗎@@ 02/13 19:26
→ wwmm:還有, 順便請問 第二種寫法會發生的問題是什麼啊? 感謝感謝 02/13 19:41
推 kusoayan:應該是當矩陣size變大後 裏面用sparse matrix的方式運算 02/13 23:53
→ kusoayan:產生的問題吧? not sure.. 02/13 23:53