伯努利在Python / Scipy中的发行版

时间:2015-06-18 15:42:21

标签: python scipy bernoulli-probability

我尝试使用伯努利分布生成一个矩阵,其中每个线条单元的概率为line_id/total_lines1.0

那是我的代码:

from scipy.stats import bernoulli
import numpy

img_size = 100
img_number = 100

res = numpy.zeros((img_number+1, 6))

image_files = []
for i in range(1):
    image_base = Dt.Data(xd=img_size, yd=img_size)
    for p in numpy.arange(0.0, 1.0, 1.0/img_size):
        s = bernoulli.rvs(p, size=img_size)
        image_base.data[int(p * img_size), ...] = s
        if not s.any() == True:
            print int(p * img_size), s
    if i == 0:
        Dv.DataVisualization.plot_data(image_base, 'bin'+str(i))
    image_files.append(image_base)

from PIL import Image

def plot_data(data, file_path):
    output = Image.fromarray(numpy.uint8(data.data * 255))
    output.save(file_path + '.png', 'PNG')

然而,对于生成的每个图像,我得到一条线(不是第一条线),由零完成。这是最奇怪的:

enter image description here enter image description here enter image description here

此:

if not s.any() == True:
    print int(p * img_size), s

只打印第一行。但是,我仍然可以在所有图像上看到满足0的三条线(总是相同的线)。

1 个答案:

答案 0 :(得分:1)

我认为你可能会误用Numpy的all()any()。表达式s.any()的计算结果为布尔值。

如果我想确定我是否有一个Numpy数组,其元素都是零,我应该检查条件not s.any() == True