创建一个numpy数组,其中的零和一在随机位置

时间:2020-08-17 12:45:02

标签: python numpy

我正在使用Python 3.7.7。

我想创建一个Numpy数组,其随机值在1到0之间。我发现我可以创建一个所有元素都等于零的数组:

zeros = np.zeros((960, 200, 200, 1))

或等于一个:

ones = np.ones((960, 200, 200, 1))

这些函数返回一个数组,其所有元素都等于。

我想创建一个数组,其元素在随机位置为零或一。

我该怎么办?

2 个答案:

答案 0 :(得分:4)

这可以使用numpy以多种方式实现,最直接的是:

size = (960, 200, 200, 1)
np.random.randint(0, 2, size=size)

如果您不希望零和一的均匀分布,则可以使用numpy.random.choice直接控制它:

size = (960, 200, 200, 1)
proba_0 = 0.8                 # resulting array will have 80% of zeros
np.random.choice([0, 1], size=size, p=[proba_0, 1-proba_0])

答案 1 :(得分:1)

您可以从[0,1]中提取数字,并询问它们是否大于阈值:

threshold = 0.5
a = 1*(np.random.rand(960, 200, 200, 1)> threshold)