我有这两列数组:
A | 1
A | 2
A | 3
B | 4
B | 5
B | 6
其中A,B为常数。我想要的是找到每个参数A和B的最小值,因此此操作的结果将是另一个这样的2D数组:
A | 1
B | 4
当仅存在一个常数A时,我成功找到了极小值:
MIN = np.where(arr == np.amin(arr[:,1]))
output = arr[MIN[0],:]
>> output = A | 1
但是当数组比这更复杂时,我无法实现自动化。谢谢您的帮助。
您可以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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句