給定一個數組,我想它正常化使得每行總和爲1歸一numpy的陣列
目前,我有以下代碼:
import numpy
w = numpy.array([[0, 1, 0, 1, 0, 0],
[1, 0, 0, 0, 0, 1],
[0, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 1, 0],
[0, 0, 0, 1, 0, 1],
[0, 1, 1, 0, 1, 0]], dtype = float)
def rownormalize(array):
i = 0
for row in array:
array[i,:] = array[i,:]/sum(row)
i += 1
我有兩個問題:
1)代碼有效,但我想知道是否有更優雅的方式。
2)如何將數據類型轉換爲浮點數,如果它是int?我試過
if array.dtype == int:
array.dtype = float
但它不起作用。
如果我添加「如果array.dtype == int:array.astype(float)」到我的函數的開始,它給了我一個零矩陣(除了一個元素是1) – wwl
您需要重新分配,請參閱編輯。 – Julien
如果我添加'return array'並將我的代碼更改爲'w = rownormalize(w)'而不是'rownormalize(w)',那麼該方法可行。有沒有辦法可以做到這一點,而無需做出上述改變?如果你不確定,那麼它很好 – wwl