【问题标题】:python: how to divide a matrix (dataframe) by a vector (dataframe)python:如何将矩阵(数据框)除以向量(数据框)
【发布时间】:2019-04-11 14:03:15
【问题描述】:

我需要将矩阵 (mat) 除以向量 (rowSums)

我的矩阵是一个数据框:

mat = pd.DataFrame(
  data=[
    (1,0,0,0),
    (1,1,1,0),
    (0,0,1,0),
    (0,1,0,0),
    (1,0,1,0)],
    columns=['ind_1','ind_2','ind_3','ind_4'],
    index=['ct1','ct2','ct3','ct4','ct5'])

向量是:

rowSums = mat.sum(axis=1)

rowSums 是:

ct1    1
ct2    3
ct3    1
ct4    1
ct5    2
dtype: int64

我需要划分 mat / rowSums 但我找不到方法。

我正在尝试从 R 复制此命令:

b = (mat / rowSums(mat))

我需要得到以下结果:

         ind_1     ind_2     ind_3    ind_4
[ct1,] 1.0000000 0.0000000 0.0000000      0
[ct2,] 0.3333333 0.3333333 0.3333333      0
[ct3,] 0.0000000 0.0000000 1.0000000      0
[ct4,] 0.0000000 1.0000000 0.0000000      0
[ct5,] 0.5000000 0.0000000 0.5000000      0

【问题讨论】:

    标签: python r dataframe matrix matrix-multiplication


    【解决方案1】:

    您可以将divaxis=0 一起使用:

    >>> mat.div(rowSums, axis=0)
            ind_1     ind_2     ind_3  ind_4
    ct1  1.000000  0.000000  0.000000    0.0
    ct2  0.333333  0.333333  0.333333    0.0
    ct3  0.000000  0.000000  1.000000    0.0
    ct4  0.000000  1.000000  0.000000    0.0
    ct5  0.500000  0.000000  0.500000    0.0
    

    【讨论】:

    • 它有效.... 一个问题。现在我需要把它从 R 翻译成 python。请给我一些指导好吗?:mm
    • 如果我没记错的话:mat.div(rowSums, axis=0).T.div((mat.sum() / mat.values.sum()),axis=0).T。测试,结果一样
    猜你喜欢
    • 2013-02-14
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 2014-09-22
    相关资源
    最近更新 更多