字典中numpy数组列的Python min/max
Posted
技术标签:
【中文标题】字典中numpy数组列的Python min/max【英文标题】:Python min/max of numpy array column within a dictonary 【发布时间】: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)
提前致谢!
【问题讨论】:
【参考方案1】:您可以将您的各个列表连接成一个 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.])
【讨论】:
这就是我一直在寻找的优雅/高效的代码!谢谢马克!以上是关于字典中numpy数组列的Python min/max的主要内容,如果未能解决你的问题,请参考以下文章
7.+利用numpy的random模块,创建一个4行5列的数组,各元素的值为0-100的随?
python使用sklearn中的DictVectorizer函数将字典数据(dictionary)转化为numpy数组使用get_feature_names函数获取数组指定列位置的标签信息