出于统计和概率的教学目的,我想通过在 Jupyter 笔记本中包含不同颜色的对象或符号的图像网格来直观地表示各种概率。
例如,通过以下代码创建像素随机图像。
import numpy as np
from PIL import Image
a = np.random.rand(100, 100)
img = Image.fromarray((a * 255).astype('uint8'), mode='L')
display(img)
我想要的是这样的东西。
为了更好地可视化集合和概率之间的联系。
我可以为这个问题提供3种解决方案。
本答案将使用随机布尔数组。
import numpy as np
N = 10
p = .75
bool_array = np.random.choice(a=[False, True], size=(N, N), p=[p, 1-p])
灵感来自Ehsan
ar = bool_array
chars = np.chararray(ar.shape, unicode=True)
true_char = '██'
false_char = ' '
chars[ar] = true_char
print(np.array2string(chars, separator='', formatter={'str_kind': lambda x: x if x else false_char}))
灵感来自P。卡米莱里
import matplotlib.pyplot as plt
ar = bool_array
plt.imshow(ar, cmap='hot')
plt.show()
改编自此网页
from mlxtend.plotting import heatmap
ar = bool_array
heatmap(ar, figsize=(N, N))
plt.show()
我认为热图是可视化概率的最佳方式。甚至可以选择中间颜色来演示条件概率。