【问题标题】:Python min/max of numpy array column within a dictonary字典中numpy数组列的Python min/max
【发布时间】:2021-08-31 07:42:42
【问题描述】:

我正在寻找一种更优雅/更有效的方法来从字典中的 numpy 数组中查找每列的最小值/最大值。

例如:

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]])

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

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

我正在使用以下代码来查找第 1 列的最小值/最大值,并且我可以使用此代码的 for 循环来查找所有列,但我想应该有一种更优雅/更有效的方法实现这一目标:

# 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)

提前致谢!

【问题讨论】:

    标签: python numpy dictionary max min


    【解决方案1】:

    您可以将您的各个列表连接成一个 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.])
    

    【讨论】:

    • 这就是我一直在寻找的优雅/高效的代码!谢谢马克!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 1970-01-01
    • 2017-08-24
    • 2016-03-19
    • 2016-10-23
    • 1970-01-01
    相关资源
    最近更新 更多