用于python numpy中矩阵式操作的一个衬垫(来自MATLAB环境)

时间:2014-11-16 06:01:49

标签: python matlab python-2.7 numpy matrix

矩阵的每一列应总和为1.在MATLAB中我会写一个矩阵mat

> mat = rand(5)

mat =
    0.2017    0.3976    0.0318    0.2750    0.2225
    0.0242    0.1222    0.1369    0.2883    0.3395
    0.0390    0.4260    0.2395    0.1462    0.2816
    0.0351    0.1851    0.2292    0.2386    0.3376
    0.1624    0.0157    0.2125    0.2813    0.2388

> mat = mat ./ ( ones(5,1) * sum(mat) )

mat = 
    0.4363    0.3467    0.0374    0.2237    0.1567
    0.0522    0.1066    0.1610    0.2345    0.2391
    0.0844    0.3715    0.2819    0.1189    0.1983
    0.0760    0.1614    0.2697    0.1941    0.2377
    0.3511    0.0137    0.2500    0.2288    0.1682

这样

> sum(mat)

ans = 
    1.0000    1.0000    1.0000    1.0000    1.0000

我希望这是本网站的合适问题。感谢。

2 个答案:

答案 0 :(得分:2)

这个操作可以在numpy中非常简洁地编写:

import numpy as np

mat = np.random.rand(5, 5)
mat /= mat.sum(0)
mat.sum(0) # will be array([ 1.,  1.,  1.,  1.,  1.])

答案 1 :(得分:1)

在NumPy中,您可以通过执行几乎完全相同的操作来完成此操作:

>>> import numpy as np
>>> mat = np.random.rand(5, 5)
>>> new_mat = mat / (np.ones((5, 1)) * sum(mat))
>>> new_mat.sum(axis=0)
array([ 1.,  1.,  1.,  1.,  1.])