首页 > 解决方案 > 使用 Matplotlib 的 2x2 二进制组合和相关二进制图像

问题描述

目的是创建填充 1 和 0 的 2x2 二进制数组的所有可能组合,并为每个数组创建相关图像并将其存储为单独的图像。

迄今为止的努力:

import itertools
import numpy as np
import matplotlib.pyplot as plt
lst = list(itertools.product([0, 1], repeat=4))
print (lst)
plt.imshow(lst)
plt.show()

电流输出:

[(0, 0, 0, 0), (0, 0, 0, 1), (0, 0, 1, 0), (0, 0, 1, 1), (0, 1, 0, 0) , (0, 1, 0, 1), (0, 1, 1, 0), (0, 1, 1, 1), (1, 0, 0, 0), (1, 0, 0, 1) , (1, 0, 1, 0), (1, 0, 1, 1), (1, 1, 0, 0), (1, 1, 0, 1), (1, 1, 1, 0) , (1, 1, 1, 1)]

二进制输出

预期输出:

00
00  

00
01

and so on

更重要的是,将这些数组保存为单独的 .png 图像 对于 2x2 数组,在此示例格式中将是 16 个图像。

10
01

示例示例

帮助!

编辑1:

在更高的矩阵保存中会引发运行时错误,可以通过添加来解决

plt.close(fig) 

在 for 语句中

运行时警告:已打开 20 多个图形。通过 pyplot 接口 ( matplotlib.pyplot.figure) 创建的图形会一直保留到显式关闭,并且可能会消耗太多内存。(要控制此警告,请参阅 rcParam figure.max_open_warning)。

标签: pythonnumpymatplotlib

解决方案


您可以通过这样做来重塑列表的每个元素

binary_images = [np.reshape(np.asarray(l), (2,2)) for l in lst]

然后使用 matplotlib 保存图像

for i in binary_images:
    plt.imshow(i)
    plt.savefig('<location>.png')
    plt.close()

 

推荐阅读