二维数组的直方图并确定包含最高值和最低值的数组

Histogram of 2D arrays and determine array which contains highest and lowest values

我有一个形状为 5 和 10 的二维数组。所以 5 个不同的数组有 10 个值。我希望得到一个直方图,看看哪个数组在直方图的低端和高端。希望这是有道理的。我附上了我的意思的示例图像(标记为示例)。

正在寻找一个直方图,但直方图是按每个数组的最高值和最低值的分布组织的。

我在使用 Python 时遇到问题。我尝试了几种方法:

# setting up 2d array
import numpy as np
from scipy import signal

np.random.seed(1234)

array_2d = np.random.random((5,20))

我认为您可以像这样绘制每个数组(其中 5 个)的所有直方图:

for i in range(5):
    plt.hist(signal.detrend(array_2d[i,:],type='constant'),bins=20)
    plt.show()

然后查看哪个数组的直方图最靠右或最靠左,但不确定这是否有意义...

然后还考虑使用.ravel将二维数组转换为一维数组,从而制作出漂亮的直方图。但是每个数组中的所有值都在移动,因此很难判断哪个数组位于直方图的低端或高端:

plt.hist(signal.detrend(array_2d.ravel(),type='constant'),bins=20)
plt.xticks(np.linspace(-1,1,10));

如何获得 5 个数组(形状 5、10)的直方图并获得具有最低值的数组与具有最高值的数组的范围? 如果这不清楚或根本不可能,也请告诉我哈哈。谢谢!

也许你可以使用 kdeplot?这将用小高斯曲线替换每个输入值并将它们相加。

from matplotlib import pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np

np.random.seed(1234)
array_2d = np.random.random((5, 20))

sns.kdeplot(data=pd.DataFrame(array_2d.T, columns=range(1, 6)), palette='Set1', multiple='layer')