给定一个数组,我想它正常化使得每行总和为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