如何移除NumPy数组中的重复行并保留嵌套结构?
NumPy数组移除重复行(保留嵌套结构)
直接调用np.unique(arr)会将数组扁平化后提取唯一元素,这就是你得到一维结果的原因。要保留二维嵌套结构、按行去重,只需给np.unique指定axis=0参数:
import numpy as np arr = np.array([[991.4, 267.3, 192.3], [991.4, 267.4, 192.3], [991.4, 267.4, 192.3], [993.5, 268. , 192.6], [993.5, 268. , 192.6], [993.5, 268.1, 192.6]]) # 按行去重,保留二维结构 unique_arr = np.unique(arr, axis=0) print(unique_arr)
输出结果:
array([[991.4, 267.3, 192.3], [991.4, 267.4, 192.3], [993.5, 268. , 192.6], [993.5, 268.1, 192.6]])
补充:保留原数组的行顺序
默认np.unique会对结果排序,如果需要保留行在原数组中首次出现的顺序,可以结合return_index=True实现:
# 获取唯一行的首次出现索引 _, idx = np.unique(arr, axis=0, return_index=True) # 按索引提取行,保持原顺序 unique_arr_ordered = arr[np.sort(idx)] print(unique_arr_ordered)
输出结果(和原数组中唯一行的出现顺序一致):
array([[991.4, 267.3, 192.3], [991.4, 267.4, 192.3], [993.5, 268. , 192.6], [993.5, 268.1, 192.6]])
内容的提问来源于stack exchange,提问作者Spatial Digger
相关产品推荐
相关产品推荐

