[英]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.