规范一个numpy数组 [英] Normalizing a numpy array
本文介绍了规范一个numpy数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
给出一个数组,我想对其进行规范化,以使每一行的总和为1.
Given an array, I want to normalize it such that each row sums to 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
我有两个问题:
1)代码有效,但是我想知道是否还有更优雅的方法.
1) The code works, but I'm wondering if there's a more elegant way.
2)如果数据类型为int,如何将其转换为浮点型?我尝试过
2) How can I convert the data type into a float if it's int? I tried
if array.dtype == int:
array.dtype = float
但这是行不通的.
推荐答案
您可以这样做1):
array /= array.sum(axis=1, keepdims=True)
和2)一样:
array = array.astype(float)
这篇关于规范一个numpy数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文