繁体   English   中英

在 Python 中的 2D np.array 中查找局部最小值

[英]Find local mimimum in 2D np.array in Python

我有这个两列数组:

A  | 1 
A  | 2
A  | 3
B  | 4
B  | 5
B  | 6

其中 A, B 是常数。 我想要的是找到每个参数 A 和 B 的最小值,因此此操作的结果将是另一个像这样的二维数组:

A | 1
B | 4

当只有一个常数 A 时,我成功地找到了最小值:

MIN = np.where(arr == np.amin(arr[:,1]))
output = arr[MIN[0],:]
>> output = A | 1

但是当数组比这更复杂时,我无法将其自动化。 谢谢您的帮助。

您正在寻找的是函数np.min的可选关键字axis 它允许您按列计算数组的最小值。 使用np.min也比使用np.amin更好,因为它允许您在结果之前少执行一步(您立即拥有最小值而不是表中的索引)

尝试这个 :

import numpy as np

a = np.array([[1,2,3], [4,5,6]])
np.min(a, axis=1)
# Result : array([1, 4])

您可以使用np.unique从第一列中提取唯一值,然后沿第一轴使用布尔掩码:

np.stack([(x, a[a[:, 0] == x, 1].min()) for x in np.unique(a[:, 0])])

或者,如果您有权访问pandas ,则可以创建一个 DataFrame 并在第一列上使用grouby

import pandas as pd

result = pd.DataFrame(a).groupby(0).min().values

代码用于例如设置a

import numpy as np

a = np.array([[1, 1, 1, 2, 2, 2],
              [1, 2, 3, 4, 5, 6]]).T

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM