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

2024-04-18 00:03:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个形状的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,我可以绘制所需的阵列,甚至可以沿着整个系列循环。 请建议这是否可行或是否有更有效的方法。 提前谢谢


Tags: theinnumpyforlenisa1绘制
1条回答
网友
1楼 · 发布于 2024-04-18 00:03:45

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

无论如何,如果希望a1的每个子数组位于单独的柱状图中,最简单的数据分块方法是np.split

for bi in map(np.squeeze, np.split(a1, len(a1))):
    plt.hist2d(bi[:, 0], bi[0, :])

np.split返回数组列表,在本例中,返回其中的len(a1) == 64。这些是a1[0]a1[1]等等

Edit:添加了np.squeeze,因为np.split返回与输入相同秩的数组

相关问题 更多 >

    热门问题