numpy.unique 生成的列表在哪些方面是唯一的?

2024-04-17

如果您输入一个包含一般对象的数组numpy.unique,结果将是唯一的,基于什么?

我努力了:

import numpy as np

class A(object): #probably exists a nice mixin for this :P
    def __init__(self, a):
        self.a = a
    def __lt__(self, other):
        return self.a < other.a
    def __le__(self, other):
        return self.a <= other.a
    def __eq__(self, other):
        return self.a == other.a
    def __ge__(self, other):
        return self.a >= other.a
    def __gt__(self, other):
        return self.a > other.a
    def __ne__(self, other):
        return self.a != other.a
    def __repr__(self):
        return "A({})".format(self.a)
    def __str__(self):
       return self.__repr__()

np.unique(map(A, range(3)+range(3)))

返回

array([A(0), A(0), A(1), A(1), A(2), A(2)], dtype=object)

但我的意图是得到:

array([A(0), A(1), A(2)], dtype=object)

假设重复A(2)是一个错字,我认为你只需要定义__hash__(参见docs http://docs.python.org/2/reference/datamodel.html#object.__hash__):

import numpy as np
from functools import total_ordering

@total_ordering
class A(object):
    def __init__(self, a):
        self.a = a
    def __lt__(self, other):
        return self.a < other.a
    def __eq__(self, other):
        return self.a == other.a
    def __ne__(self, other):
        return self.a != other.a
    def __hash__(self):
        return hash(self.a)
    def __repr__(self):
        return "A({})".format(self.a)
    def __str__(self):
       return repr(self)

produces

>>> map(A, range(3)+range(3))
[A(0), A(1), A(2), A(0), A(1), A(2)]
>>> set(map(A, range(3)+range(3)))
set([A(0), A(1), A(2)])
>>> np.unique(map(A, range(3)+range(3)))
array([A(0), A(1), A(2)], dtype=object)

我用过的地方total_ordering http://docs.python.org/2/library/functools.html#functools.total_ordering减少方法的扩散,正如您猜测的那样是可能的。 :^)

[发布后编辑以更正缺失的内容__ne__.]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

numpy.unique 生成的列表在哪些方面是唯一的? 的相关文章

随机推荐

  • 获取 ASP.NET 中所有活动会话的列表

    我知道使用以下代码行登录了哪个用户 Session loggedInUserId userId 我的问题是如何知道哪些用户登录了 以便其他用户可以看到当前登录的用户 换句话说 我可以获得所有活动的 loggedInUserId 会话吗 我没
  • xdoc 查询的 Select 语句

    我正在尝试在 xml 语句中向 Messages 添加子类别 有没有办法可以做到这一点GroupMessages gt Message gt GroupMessage var groups xDoc Descendants Group Se
  • 在 iPhone 上如何实现具有透明度的圆角矩形视图?

    许多应用程序在运行耗时的操作时都会弹出带有圆角的透明视图和 ActivityIndi cator 这种舍入是如何完成的 是否可以仅使用 Interface Builder 来完成 因为我想在很多地方使用类似的东西 或者 我应该使用带有圆角矩
  • dnorm 是如何工作的?

    我对统计和 R 很陌生 也许这是一个非常微不足道的问题 但我不太明白这是如何工作的 假设我使用dnorm 5 0 2 5 这意味着什么 我看到一些资源 他们告诉我这个函数计算密度曲线中点的高度 现在我再次读到 在连续分布中 数字的确切概率为
  • 将 collections.namedtuple 与 ProcessPoolExecutor 一起使用在某些情况下会陷入困境

    gt gt gt import concurrent futures gt gt gt from collections import namedtuple gt gt gt 1 Initialise namedtuple here gt
  • cron 的替代品? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 有谁知道 cron 有一个好的替代品吗 我想要一些可以在不同时区运行的东西 您可以考虑Quartz http www opensymphony
  • SFML 2.1 架构 x86_64 错误的未定义符号

    我最近安装了 SFML 2 1 并尝试从终端编译和运行 而不是 Xcode 他们在其网站上有示例程序http www sfml dev org tutorials 2 0 start linux php http www sfml dev
  • 使用 CSS 选择器制作棋盘图案

    我有一个 div 元素列表 当前使用 CSS 浮动在两列中显示 我想 替换 这些元素的边框颜色 我在引号中使用了交替 因为我真正想要的是每个 行 中的两个 div 交替 下面是我想要的最终状态的示例 1blue 2green 3green
  • 集群环境下的Spring Singleton

    正如中所讨论的this https stackoverflow com questions 1194129 singleton in cluster environmentpost 不适合使用单例聚集的环境 因为不同 JVM 中有多个单例对
  • 卡尔曼滤波器和内部状态变量的质量

    我正在尝试为 Android 开发运动检测应用程序 应用程序应该能够跟踪手机在空间中的运动并将其映射到计算机屏幕上的运动 我正在使用 3 轴加速度计 由于数据非常嘈杂 我正在使用卡尔曼滤波器 内部状态是 6 个分量向量 speed x sp
  • PHP 字符串分割

    我需要将一个字符串拆分为 2 2 3 3 个字符的块 并且可以通过使用 unpack 在 Perl 中执行此操作 unpack A2A2A3A3 thisisloremipsum 然而 相同的函数在 PHP 中不起作用 它给出以下输出 Ar
  • Google 地点详细信息 API 中的语言不一致

    我在我的服务器上使用 Google Place Details API 来存储有关某个地点的信息 使用placeId由客户发送 我面临着有关结果语言的问题 当该地点是城市或该城市中的地址时 结果的语言会有所不同 即使在查询中指定了语言也是如
  • Excel VBA onkey 宏可在另一个宏运行时工作

    我有一个宏 可以让您使用箭头键移动标记的单元格 这是将其向下移动的代码 Sub MoveMarkedDown Dim noDo As Boolean With myMarkedCell Select Case Row Case Is gt
  • VSCode 中是否有快捷方式可以在调试 REPL 中执行当前行或选择?

    我正在使用 Python 进行开发 并且通常在集成终端中运行代码Shift Enter 不过调试的时候过程似乎比较复杂 我需要复制代码 将焦点移至调试 REPL Ctrl Shift Y 粘贴 运行并将焦点移回编辑器 有没有更简单的方法来做
  • pip3 安装不起作用 - 没有名为“pip._vendor.pkg_resources”的模块

    当尝试安装 Python 3 的软件包 在 Ubuntu 中 时 使用pip3 install packageName or sudo pip3 install packageName 我收到以下错误消息 Traceback most re
  • 从数据库上传模型时丢失数据注释

    我有一个大数据库现有数据库可以与之通信 并且我首先使用 EF 5 0 数据库 我遇到的问题是 如果我创建任何数据装饰 例如 stringlength 50 在课堂上 然后上传数据库 当我 从数据库上传 时 所有数据注释都消失了 我该怎么做才
  • 如何禁用/更改 ion-nav-view 中视图之间的动画

    我开始了一个 Ionic 选项卡项目 这个项目带来了视图之间的默认动画 进入时从左到右 返回时从右到左 我想通过指定两种类型的视图动画来保留对此的控制 从下到上 没有动画 到目前为止 我尝试按如下方式禁用动画 正如建议的那样离子论坛主题 h
  • Rails:渴望加载 as_json 包括

    render json gt playlist gt playlist description songs gt playlist songs as json include gt playlist songs gt only gt id
  • 在 Qt 中检查 QObject 派生类类型的正确方法

    假设我有两门课 class A public QObject class B public QObject 那我去 QObject a new A QObject b new B 现在 我如何确保 a 是A类的实例 而 b 是B类的实例 目
  • numpy.unique 生成的列表在哪些方面是唯一的?

    如果您输入一个包含一般对象的数组numpy unique 结果将是唯一的 基于什么 我努力了 import numpy as np class A object probably exists a nice mixin for this P