python - 使用 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
)。
解决方案
您可以通过这样做来重塑列表的每个元素
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()
推荐阅读
- javascript - 使用 Promises / Async-Await (Node.JS) 修复代码
- javascript - 使用 javascript 生成 CKEDITOR 不适用于 for 循环语句
- node.js - 使用 body-parser 和 Express 从请求中读取 png 图像
- ruby - 为什么我们在使用 net/http 时需要运行 start?
- amazon-web-services - AWS CloudFront 未更新
- node.js - NodeJS:为什么模块错误是静默的?
- laravel - Fractal 中的 JsonApiSerializer 包含的数据类型为空
- url-rewrite-module - Url rewrite 2.1 停止 IIS 8.5 中的应用程序池(返回 503 状态),windows server 2012R2
- android - “String”类型不是“index”的“int”类型的子类型
- python - 如何使用 URL 名称保存文件?