Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 读取3D数组并将其绘制为2D(如图片),而无需将其从3D转换为2D(如np)_Python_Numpy_Matplotlib_Numpy Ndarray_Imshow - Fatal编程技术网

Python 读取3D数组并将其绘制为2D(如图片),而无需将其从3D转换为2D(如np)

Python 读取3D数组并将其绘制为2D(如图片),而无需将其从3D转换为2D(如np),python,numpy,matplotlib,numpy-ndarray,imshow,Python,Numpy,Matplotlib,Numpy Ndarray,Imshow,我想使用matplotlib库的imshow()命令从这个NumPy文件中获取图像,但我不应该将其转换为3d数组。有没有办法读取3D阵列并将其绘制为2D,如图所示 如果我无法解释,我通常需要将数组转换为2D并绘制它。通常我可以使用类似于np.concatenate或np.append的命令来执行此操作,并获得以下数组 x = np.array[[[8, 7, 1, 0, 3], [2, 8, 5, 5, 2], [1, 1, 1, 1,

我想使用
matplotlib
库的
imshow()
命令从这个
NumPy
文件中获取图像,但我不应该将其转换为3d数组。有没有办法读取3D阵列并将其绘制为2D,如图所示

如果我无法解释,我通常需要将数组转换为2D并绘制它。通常我可以使用类似于
np.concatenate
np.append
的命令来执行此操作,并获得以下数组

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]]]
但我需要在不将其转换为2D的情况下绘制它。

您的图像


描述了一个3行×20列的数组,您可以从一个
(4,3,5)
形状开始,然后从打印的2D数组开始

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列,因此最后一个维度必须保持不变,而前两个轴必须交换,所以我认为正确的咒语应该是

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)数组。如何将其映射到绘图?正如我所写的,我将把数组中的第三维相加,得到一个二维数组。如果不将其转换为二维数组,则无法得到该绘图。大多数NumPy方法不会更改原始数组;如果你想使用这样的方法,你可以运行
.copy()
来克隆原始文件,将其重新格式化为你需要的2D版本,然后打印出来。我看你已经接受了我的答案,但是我必须说,即使没有使用
连接
等进行显式复制,数据也会被复制
...
plt.imshow(np.transpose(x, (1,0,2)).reshape(3,20))
...