我有一组这样的数据:
interactions=np.array([[0,1], [0,2], [0,3], [1,2], [1, 4], [2, 1], [2,5], [2,7]])
我需要迭代第一列中的每个值,在第二列中找到相应的最大值,然后存储在新数组中(或者从该数组中删除其他值)。因此,对于本例,最终输出为:
interactions=[[0, 3], [1, 4], [2,7]]
我已经成功地编写了一段代码,可以对特定的列值执行此操作,但无法解决如何将其转换为循环来执行整个数组:
创建一个数组以在其中存储值:
p_gamma=np.amax(interactions[:,0])
zfinal=np.zeros([np.int(p_gamma)+1, 2])
找到每个列值的最大值(这就是我需要帮助的地方!):
counter=0
interactions=interactions[interactions[:,0] ==counter]
maxval=np.amax(interactions[:, 1])
interactions=interactions[interactions[:, 1] == maxval]
zfinal[0,:]=interactions
提前感谢您提供的任何帮助
这方面的
numpy
方法是:这是一种可能的单行解决方案,无需使用任何其他库:
输出:
使用pandas groupby第一列
0
并取max并转换回numpy数组:输出:
说明:
pd.DataFrame(interactions)
:从numpy数组创建数据帧groupby(0)
:按第一列对数据进行分组max()
:查找每个组中第二列的最大值reset_index()
:将groupby对象转换为数据帧to_numpy()
:将数据帧转换为numpy数组相关问题 更多 >
编程相关推荐