wwl*_*wwl 2 python numpy vectorization
给定一个数组,我想将其标准化,使每行总和为1.
我目前有以下代码:
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
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
1)代码有效,但我想知道是否有更优雅的方式.
2)如果它是int,我如何将数据类型转换为float?我试过了
if array.dtype == int:
array.dtype = float
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
你可以这样做1):
array /= array.sum(axis=1, keepdims=True)
Run Code Online (Sandbox Code Playgroud)
和2)那样:
array = array.astype(float)
Run Code Online (Sandbox Code Playgroud)