Python min/max 字典中的 numpy 数组列

Python min/max of numpy array column within a dictonary

我正在寻找一种更 elegant/efficient 的方法来从字典中的 numpy 数组中查找每一列的 min/max 值。

例如:

inputs = ['test1','book','panda']

total['test1'] = np.array([[1,1.5,2],[14,20,8],[5,9,2]])
total['book'] = np.array([[4,8,12],[44,2,81],[3,8,3]])
total['panda'] = np.array([[1,3,8],[104,4,51]])

现在我想找到每一列的 min/max 值;这应该会产生一个像这样的数组:

[1, 1.5, 2],
[104, 20, 81]

我正在使用以下代码查找第 1 列的 min/max,我可以使用此代码的 for 循环为所有列查找它,但我想应该有更多 elegant/effcient 实现方式:

# Find min and max 
min_list = []
max_list = []

for e,nam in enumerate(inputs):
    min_list.append((total[nam][:,1].min()))
    max_list.append((total[nam][:,1].max()))

min_val = min(min_list) 
max_val = max(max_list)

提前致谢!

您可以将各个列表连接成单个 Numpy 数组,然后只需沿所需轴使用 minmax

total = {}
total['test1'] = np.array([[1,1.5,2],[14,20,8],[5,9,2]])
total['book'] = np.array([[4,8,12],[44,2,81],[3,8,3]])
total['panda'] = np.array([[1,3,8],[104,4,51]])

stacked = np.concatenate(list(total.values()))

stacked.min(axis=0)
# array([1. , 1.5, 2. ])
stacked.max(axis=0)
# array([104.,  20.,  81.])