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 数组,然后只需沿所需轴使用 min
和 max
:
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.])
我正在寻找一种更 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 数组,然后只需沿所需轴使用 min
和 max
:
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.])