读取 3D 数组并将其绘制为像图片一样的 2D,而无需像 np.concatenate 那样从 3D 转换为 2D
Read 3D array and plot it as 2D like a picture without converting from 3D to 2D like np.concatenate
x = np.array[[[8, 7, 1, 0, 3],
[2, 8, 5, 5, 2],
[1, 1, 1, 1, 1]],
[[8, 4, 1, 0, 0],
[6, 8, 5, 5, 2],
[1, 1, 1, 1, 1]],
[[2, 4, 0, 2, 3],
[2, 5, 5, 3, 2],
[1, 1, 1, 1, 1]],
[[4, 7, 2, 8, 0],
[1, 3, 6, 5, 2],
[1, 1, 1, 1, 1]]]
我想使用 matplotlib
库的 imshow()
命令从此 NumPy
文件获取图像,但我不应该将其转换为 3d 数组。有什么方法可以读取 3D 数组并将其绘制为 2D,就像这张照片一样。
如果我无法解释,我通常需要将我们必须的数组转换为二维并绘制它。通常我可以为此使用 np.concatenate
或 np.append
之类的命令并获得以下数组。
x = np.array[[[8, 7, 1, 0, 3, 8, 4, 1, 0, 0, 2, 4, 0, 2, 3, 4, 7, 2, 8, 0],
[2, 8, 5, 5, 2, 6, 8, 5, 5, 2, 2, 5, 5, 3, 2, 1, 3, 6, 5, 2],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
但我需要在不将其转换为 2D 的情况下绘制它。
你的头像
描绘了一个 3 行 × 20 列的数组,您从 (4,3,5)
形状开始,然后从您打印的二维数组
x = np.array([[8, 7, 1, 0, 3, 8, 4, 1, 0, 0, 2, 4, 0, 2, 3, 4, 7, 2, 8, 0],
[2, 8, 5, 5, 2, 6, 8, 5, 5, 2, 2, 5, 5, 3, 2, 1, 3, 6, 5, 2],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]])
我看到您需要连接 4 个 3 行 5 列的矩阵,因此最后一个维度必须保持不变,而前两个轴必须交换,所以我认为正确的咒语是
...
plt.imshow(np.transpose(x, (1,0,2)).reshape(3,20))
...
这给了我
x = np.array[[[8, 7, 1, 0, 3],
[2, 8, 5, 5, 2],
[1, 1, 1, 1, 1]],
[[8, 4, 1, 0, 0],
[6, 8, 5, 5, 2],
[1, 1, 1, 1, 1]],
[[2, 4, 0, 2, 3],
[2, 5, 5, 3, 2],
[1, 1, 1, 1, 1]],
[[4, 7, 2, 8, 0],
[1, 3, 6, 5, 2],
[1, 1, 1, 1, 1]]]
我想使用 matplotlib
库的 imshow()
命令从此 NumPy
文件获取图像,但我不应该将其转换为 3d 数组。有什么方法可以读取 3D 数组并将其绘制为 2D,就像这张照片一样。
如果我无法解释,我通常需要将我们必须的数组转换为二维并绘制它。通常我可以为此使用 np.concatenate
或 np.append
之类的命令并获得以下数组。
x = np.array[[[8, 7, 1, 0, 3, 8, 4, 1, 0, 0, 2, 4, 0, 2, 3, 4, 7, 2, 8, 0],
[2, 8, 5, 5, 2, 6, 8, 5, 5, 2, 2, 5, 5, 3, 2, 1, 3, 6, 5, 2],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
但我需要在不将其转换为 2D 的情况下绘制它。
你的头像
描绘了一个 3 行 × 20 列的数组,您从 (4,3,5)
形状开始,然后从您打印的二维数组
x = np.array([[8, 7, 1, 0, 3, 8, 4, 1, 0, 0, 2, 4, 0, 2, 3, 4, 7, 2, 8, 0],
[2, 8, 5, 5, 2, 6, 8, 5, 5, 2, 2, 5, 5, 3, 2, 1, 3, 6, 5, 2],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]])
我看到您需要连接 4 个 3 行 5 列的矩阵,因此最后一个维度必须保持不变,而前两个轴必须交换,所以我认为正确的咒语是
...
plt.imshow(np.transpose(x, (1,0,2)).reshape(3,20))
...
这给了我