我正在try 找到一种有效的方法来删除包含重复元素的Numy数组的行.例如,下面的数组:

[[1,2,3], [1,2,2], [2,2,2]]

应该只保留[[1,2,3]]英镑.

我知道Pandas 的申请可以按行进行,但这太慢了.更快的替代方案是什么?

谢谢!

推荐答案

使用Pandas nunique(不快!):

out = a[pd.DataFrame(a).nunique(axis=1).eq(a.shape[1])]

或者使用NumPy的sortdiff来确保所有值在一行中是不同的(如果列数合理,则非常有效):

out = a[(np.diff(np.sort(a, axis=1))!=0).all(axis=1)]

或者使用广播(如果有很多列,则内存昂贵):

out = a[(a[:,:,None] == a[:,None]).sum(axis=(1,2))==a.shape[1]]

输出:array([[1, 2, 3]])

方法的比较:

enter image description here

Python相关问答推荐

无法在Python中使用Selenium标记正确的元素以抓取网站

Pandas 密集排名具有相同值,按顺序排列

仅使用2种 colored颜色 创建热图

隐藏QComboBox的指示器(qdarkstyle)

在Transformer中使用LabelEncoding的ML模型管道

如何处理必须存在于环境中但无法安装的Python项目依赖项?

机器人与Pyton Minecraft服务器状态不和

Matplotlib轮廓线值似乎不对劲

有什么方法可以避免使用许多if陈述

GL pygame无法让缓冲区与vertextPointer和colorPointer一起可靠地工作

在线条上绘制表面

将pandas Dataframe转换为3D numpy矩阵

SQLAlchemy Like ALL ORM analog

如何让这个星型模式在Python中只使用一个for循环?

Odoo 16使用NTFS使字段只读

Python脚本使用蓝牙运行在Windows 11与raspberry pi4

Python列表不会在条件while循环中正确随机化'

Django—cte给出:QuerySet对象没有属性with_cte''''

使用BeautifulSoup抓取所有链接

基于行条件计算(pandas)