我有一个问题,我需要根据一个矩阵的数字化形式对另一个矩阵的条目进行打乱。
假设我有一个由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])
我想要做的是根据第二个矩阵的仓位重新排列0和1。假设我在1号箱中有24个0和4个1,我想要做的是打乱0和1的条目,使它们留在1号箱中,并且它们保持相同的0和1的数量。
我尝试在使用np.random.shuffle的同时使用np.where,但这不能保持0和1的原始计数。
发布于 2020-11-18 20:23:33
好的,我找到了一个解决方案,我可以循环多个矩阵和存储箱。
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分别是行索引和列索引。输出是混洗后的矩阵。
https://stackoverflow.com/questions/64883856
复制相似问题