我有一个形状的3D numpy数组(64200200)。我想绘制一系列沿第1轴迭代的二维直方图,也就是说,我想为每个(200x200)切片绘制一个二维直方图。我试过:
for i in range(len(a1)-1): #a1 is the array in question
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
np.split
返回数组列表,在本例中,返回其中的len(a1) == 64
。这些是a1[0]
、a1[1]
等等Edit:添加了
np.squeeze
,因为np.split
返回与输入相同秩的数组相关问题 更多 >
编程相关推荐