簡體   English   中英

Python / Scipy中的伯努利分布

[英]Bernoulli distribution in Python/Scipy

我正在嘗試使用伯努利分布生成一個矩陣,其中每個行單元格的line_id/total_lines概率為1.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')

但是,對於生成的每個圖像,我都會得到一行(不是第一行),並由零填充。 至少這很奇怪:

在此處輸入圖片說明在此處輸入圖片說明在此處輸入圖片說明

這個:

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

僅打印第一行。 但是,我仍然可以看到在所有圖像上三行(總是相同的行)被0滿足。

我認為您可能會濫用Numpy的all()any() 表達式s.any()計算為布爾值。

如果要確定我是否有一個元素均為零的Numpy數組,則應檢查條件not s.any() == True

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM