在 python 中将布尔向量可视化为具有不同颜色的符号的图像网格

问题描述 投票:0回答:1

出于统计和概率的教学目的,我想通过在 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)

我想要的是这样的东西。

为了更好地可视化集合和概率之间的联系。

python jupyter-notebook statistics visualization probability
1个回答
0
投票

我可以为这个问题提供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}))

解决方案 2:使用 matplotlib

灵感来自P。卡米莱里

import matplotlib.pyplot as plt
ar = bool_array
plt.imshow(ar, cmap='hot')
plt.show()

解决方案 3:使用 mlxtend

改编自此网页

from mlxtend.plotting import heatmap
ar = bool_array
heatmap(ar, figsize=(N, N))
plt.show()

我认为热图是可视化概率的最佳方式。甚至可以选择中间颜色来演示条件概率。

© www.soinside.com 2019 - 2024. All rights reserved.