矩阵元素比率控制

问题描述

我正在使用代码

import numpy as np
P=np.random.choice([0,1],(10000,10,10))

生成10,000个3D二进制矩阵。但是我需要控制每个矩阵中1与0的比率。我的意思是,对于任何给定的矩阵,我希望其元素的70%为1,其余元素为0。有没有办法做到这一点?概率方法也将起作用。例如,如果对于任何给定的矩阵,其每个元素为1的概率都等于70%,那么它也可以工作。

解决方法

您应在numpy.random.choice中指定概率参数

import numpy as np

size = (10000,10,10)
prob_0 = 0.3 # 30% of zeros
prob_1 = 1 - prob_0 # 70% of ones

P = np.random.choice([0,1],size=size,p=[prob_0,prob_1])

但是,这将允许控制整个4d阵列中的比率,而不是每个子阵列中的比率。