[英]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.