假設你有這樣的數組:問題與numpy的陣列真司
In [29]: a = array([[10, 20, 30, 40, 50], [14, 28, 42, 56, 70], [18, 36, 54, 72, 90]])
Out[30]: a
array([[ 0, 0, 0, 0, 0],
[14, 28, 42, 56, 70],
[18, 36, 54, 72, 90]])
現在由第一個(從未來進口部使用)
In [32]: a[0]/a[2]
Out[32]: array([ 0.55555556, 0.55555556, 0.55555556, 0.55555556, 0.55555556])
現在做分割第三排在一個循環的每一行相同:
In [33]: for i in range(3):
print a[i]/a[2]
[ 0.55555556 0.55555556 0.55555556 0.55555556 0.55555556]
[ 0.77777778 0.77777778 0.77777778 0.77777778 0.77777778]
[ 1. 1. 1. 1. 1.]
一切看起來鑽機H T。但現在,將第一個陣列的[I]/A [2]至[Ⅰ]:
In [35]: for i in range(3):
a[i]/=a[2]
....:
In [36]: a
Out[36]:
array([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[1, 1, 1, 1, 1]])
好的,沒有問題。變爲this is by design。相反,我們應該這樣做:
In [38]: for i in range(3):
a[i] = a[i]/a[2]
....:
In [39]: a
Out[39]:
array([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[1, 1, 1, 1, 1]])
但這並不奏效。爲什麼以及如何修復它?
在此先感謝。
謝謝。是的,我考慮過這個問題,但我想知道一個解決方案,因爲它應該作爲一個[i] = a [i]/a [2] –
如果不明顯,這會創建一個新的數組。有沒有辦法(我知道)做到這一點,修改舊的數組,並更改類型。 – mgilson
這是不可能的,因爲舊的和新的類型可能有不同的大小,或者舊的數組可能是一個不應該被修改的其他數組的視圖。 – nneonneo