python - 如何将 numpy 数组打印(可视化)为二维矩阵?
问题描述
我有一个 nd numpy 数组,它模拟一个二维矩阵,其中每个元素都是一个列向量。我需要打印二维数组,因为它是一个矩阵。
下面是创建数组的代码:
Lx = 4
Ly = 4
f = 3
q = 10
pop = np.random.randint(q, size = (Lx, Ly, 1, f))
数组如下所示:
[[[[3 3 6]]
[[5 2 2]]
[[6 0 2]]
[[5 8 8]]]
[[[7 8 2]]...
我需要以某种方式将其视为:
print(pop[0,0][0], pop[0,1][0], pop[0,2][0], pop[0,3][0])
print(pop[1,0][0], pop[1,1][0], pop[1,2][0], pop[1,3][0])
print(pop[2,0][0], pop[2,1][0], pop[2,2][0], pop[2,3][0])
print(pop[3,0][0], pop[3,1][0], pop[3,2][0], pop[3,3][0])
[2 9 2] [5 5 8] [4 9 3] [4 2 3]
[3 9 0] [6 4 0] [8 3 9] [6 4 1]
[4 8 9] [2 2 6] [1 3 8] [4 5 6]
[4 1 5] [8 0 9] [3 9 7] [4 4 3]
我不能使用示例的打印方法,因为数组可以更大。理想情况下,将其可视化,如本例中的图像所示:
使用 matplotlib 将 1D numpy 数组可视化为 2D 数组
感谢所有建议!
解决方案
删除了空维度的嵌套四循环:
In [46]: z = pop.reshape(tuple(d for d in pop.shape if d > 1))
In [47]: z.shape
Out[47]: (4, 4, 3)
In [48]: for x in z:
...: for y in x:
...: print(y, end=' ')
...: print()
...:
[4 0 3] [0 5 6] [7 4 2] [9 2 6]
[8 3 1] [0 8 8] [5 7 9] [3 1 5]
[4 9 9] [4 8 5] [0 8 7] [8 9 7]
[8 7 4] [4 7 5] [1 8 5] [4 3 0]
或者(使用相同的z
):
In [55]: n = z.shape[1]
In [56]: fmt = '{} ' * n
In [57]: for x in z:
...: print(fmt.format(*x))
...:
[4 0 3] [0 5 6] [7 4 2] [9 2 6]
[8 3 1] [0 8 8] [5 7 9] [3 1 5]
[4 9 9] [4 8 5] [0 8 7] [8 9 7]
[8 7 4] [4 7 5] [1 8 5] [4 3 0]
推荐阅读
- html - 闪亮的 HTML 整页 Bootstrap 轮播
- javascript - 如何在我的网络应用程序上推送通知
- azure - 如何通过托管服务器 Microsoft azure 连接我的域(例如:www.xyz.com)?
- python - 如何使用 Python 在 HDFS 中查看传入文件的目录?(Python Script 由 Docker Container 执行;HDFS 中没有 Cronjob)
- sql - 当其他表中的日期比今天更早时更新列(完成)+在其他表中插入新行,ID来自第一个表
- python - 将 PNG 纹理应用于 PLY 网格
- c# - 如何将另一个项目(get,post)api方法引入swagger api项目?
- python - Flask_kerberos KrbError: ('Principal not found in keytab', -1)
- django - Django 模型:多对多或一对多
- sql - 选择查询语句中的自动递增字段