规范一个numpy数组 [英] Normalizing a numpy array

查看:167
本文介绍了规范一个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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆