在python中有个二维的np.array数据,数组中有很多重复的数据,需要对数组根据第一列和最后一列去重处理,保留最后一行满足条件的数据,示例数据如下,一个二维数据,有5行13列,实际运用中行数可能会到60万条左右
data_array = np.array([[1050364, 13, 15, 18, 2, 2195, 3.22, 2800, 0, 0, 1, 1, 7301],
[3562, 13, 14, 25, 1, 2829, 20.62, 200, 0, 0, 1, 1, 1081],
[1050364, 13, 15, 18, -2, 2195, 3.22, 2800, 0, 0, 0, 1, 7301],
[3562, 13, 14, 25, 1, 2829, 20.62, 200, 20.62, 200, 0, 1, 1081],
[1050368, 13, 19, 7, 1, 2551, 2.56, 1000, 0, 0, 0, 1, 7301],
[3568, 13, 20, 4, 1, 2048, 5.18, 2500, 5.19, 2500, 0, 10, 1081]])
数组中有很多过时或者重复的数据,需要对数组去重处理,根据第一列和最后一列去重处理,第一列和最后一列相同的数据保留最后一行,处理后的结果如下:
result_array = np.array([[1050368, 13, 19, 7, 1, 2551, 2.56000, 1000, 0, 0, 0, 1, 7301],
[1050364, 13, 15, 18, -2, 2195, 3.22000, 2800, 0, 0, 0, 1, 7301],
[3562, 13, 14, 25, 1, 2829, 20.62000, 200, 20.62000, 200, 0, 1, 1081],
[3568, 13, 20, 4, 1, 2048, 5.18000, 2500, 5.19000, 2500, 0, 10, 1081]])
结果中,数组的第一列和最后一列都是唯一的,python中有什么算法或者第三方库能够满足这种处理需求?
现在我找到一个python第三方库“numpy_indexed”,去重处理的代码如下:
import numpy_indexed as npi
group_index, result_array = npi.group_by(data_array[:, [-1, 0]]).last(data_array)
使用“numpy_indexed”库中的group_by和last方法可以得到正确的结果,数据量少时处理速度还行,但是当数据量到30万条以上时,处理速度下降,效率不高,有没有什么更高效、更快速的处理方式?
希望各位能够推荐更高效、更快速的处理方式,