Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 从三维numpy阵列绘制二维直方图_Python_Arrays_Numpy_Matplotlib_Histogram - Fatal编程技术网

Python 从三维numpy阵列绘制二维直方图

Python 从三维numpy阵列绘制二维直方图,python,arrays,numpy,matplotlib,histogram,Python,Arrays,Numpy,Matplotlib,Histogram,我有一个形状的3D numpy数组(64200200)。我想绘制一系列沿第1轴迭代的二维直方图,也就是说,我想为每个(200x200)切片绘制一个二维直方图。我试过: 对于范围内的i(len(a1)-1):#a1是所讨论的数组 plt.hist2d(a1[i,:,0],a1[i,0,:]) plt.show() 但是,我希望沿着第一个轴循环,并将每个2D阵列切片存储在一个名为b1、b2、b3、…b64的阵列系列中,该系列可以在循环本身中生成(手动执行很困难)。然后使用imshow,我可以绘制所

我有一个形状的3D numpy数组(64200200)。我想绘制一系列沿第1轴迭代的二维直方图,也就是说,我想为每个(200x200)切片绘制一个二维直方图。我试过:

对于范围内的i(len(a1)-1):#a1是所讨论的数组
plt.hist2d(a1[i,:,0],a1[i,0,:])
plt.show()
但是,我希望沿着第一个轴循环,并将每个2D阵列切片存储在一个名为b1、b2、b3、…b64的阵列系列中,该系列可以在循环本身中生成(手动执行很困难)。然后使用imshow,我可以绘制所需的阵列,甚至可以沿着整个系列循环。 请建议这是否可行或是否有更有效的方法。
提前谢谢

我不知道为什么您需要实际创建
b1
b2
,…,因为您可以按顺序存储它们。另外,我真的不明白你在直方图中画了什么
plt.hist2d(a1[i,:,0],a1[i,0,:])
将只使用
a1[i]
的第一列和第一行,因此您丢失了大部分数据

无论如何,如果您希望将
a1
的每个子数组放在单独的柱状图中,则最简单的数据块方法是
np.split

对于映射中的bi(np.squence,np.split(a1,len(a1)):
plt.hist2d(bi[:,0],bi[0,:])
np.split
返回数组列表,在本例中,
len(a1)==64个数组。它们是
a1[0]
a1[1]
,等等


编辑:添加了
np.squage
,因为
np.split
返回与输入相同秩的数组。

此返回
ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all()
@AMC Edited解释
np.split
返回与其输入相同秩的数组这一事实。