使用Numpy编写函数返回所有元素完全唯一的行(禁止使用循环)
用Numpy筛选元素全不重复的行(无循环实现)
以下是满足需求的Numpy函数实现,完全基于向量化操作,未使用任何循环:
import numpy as np def get_unique_element_rows(A): # 对每行排序,让重复元素相邻排列 sorted_row = np.sort(A, axis=1) # 检查每行是否存在相邻重复元素 has_dup = np.any(sorted_row[:, 1:] == sorted_row[:, :-1], axis=1) # 筛选出无重复元素的行 return A[~has_dup]
实现思路
- 排序归并重复元素:通过
np.sort对数组每行进行排序,使同一行内的重复元素相邻,便于后续检测。 - 检测重复元素:对比每行相邻位置的元素,生成布尔矩阵标记重复位置;再用
np.any沿行方向判断该行是否存在重复。 - 筛选目标行:对标记重复的布尔数组取反,以此为索引从原数组中筛选出所有元素互不相同的行。
示例验证
示例1
A = np.array([ [1, 2, 3], [4, 4, 4], [5, 6, 6]]) print(get_unique_element_rows(A))
输出:
array([[1, 2, 3]])
示例2
A = np.arange(9).reshape(3, 3) print(get_unique_element_rows(A))
输出:
array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
内容的提问来源于stack exchange,提问作者VMu
相关产品推荐
相关产品推荐

