【问题标题】:shuffling entries of one matrix based on digitzed form of another matrix基于另一个矩阵的数字化形式对一个矩阵的条目进行混洗
【发布时间】:2020-11-17 21:49:59
【问题描述】:

我有一个问题,我需要根据另一个矩阵的数字化形式来打乱一个矩阵的条目。

假设我有一个填充了 0 或 1 的矩阵; np.random.choice([0, 1], size=100, p=[.9, .1])

然后,我采用另一个填充了 0-4 值的矩阵。 np.random.choice([0, 1, 2, 3, 4], size=100, p=[.01, 0.3, 0.3, 0.29, .1])

我想做的是根据第二个矩阵的 bin 重新排列 0 和 1。因此,假设我在 bin 1 中有 24 个 0 和 4 个 1,我想做的是打乱 0 和 1 的条目,以便它们留在 bin 1 中,并且它们保持相同数量的 0 和 1。

我曾尝试使用 np.where 和 np.random.shuffle,但这并不能保持 0 和 1 的原始计数。

【问题讨论】:

    标签: python numpy shuffle


    【解决方案1】:

    好的,我找到了一个可以循环遍历多个矩阵和 bin 的解决方案。

    a = np.array(pd.DataFrame(connections[M_a][M_b]['cMat']))
    
        for aw in groups:
            b = a[C_ == aw]
            np.random.shuffle(b)
            iz, jz = np.nonzero(C_ == aw)
    
            for i, j, v in zip(iz, jz, b):
                a[i, j] = v
    

    groups 在这种情况下是每个 bin 的值,范围从 0 到 n。 a 是包含 0 和 1 的矩阵。 C_ 是数字化矩阵。 iz 和 jz 分别是行和列索引。输出是混洗后的矩阵。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-10
      • 2021-11-09
      • 2021-11-16
      • 2016-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多