二进制 numpy 数组之间的快速汉明距离计算

2024-04-08

我有两个长度相同的 numpy 数组,其中包含二进制值

import numpy as np
a=np.array([1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0])
b=np.array([1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1])

我想尽快计算它们之间的汉明距离,因为我要进行数百万次这样的距离计算。

一个简单但缓慢的选项是这样的(摘自维基百科):

%timeit sum(ch1 != ch2 for ch1, ch2 in zip(a, b))
10000 loops, best of 3: 79 us per loop

受到堆栈溢出上一些答案的启发,我提出了更快的选项。

%timeit np.sum(np.bitwise_xor(a,b))
100000 loops, best of 3: 6.94 us per loop

%timeit len(np.bitwise_xor(a,b).nonzero()[0])
100000 loops, best of 3: 2.43 us per loop

我想知道是否有更快的方法来计算这个,可能使用 cython?


有一个现成的 numpy 函数可以胜过len((a != b).nonzero()[0]) ;)

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

二进制 numpy 数组之间的快速汉明距离计算 的相关文章

随机推荐

  • mongoid多态关联错误

    我在使用带有多态字段的 mongoid 3 0 6 时遇到一些问题 使用 Rails 3 2 8 和 ruby 1 9 3 使用正常的多态关系 class Shirt include Mongoid Document field name
  • 为什么“lambda 表达式的计算在调试器中无效”?

    我有一个看似无害的代码片段 我将其输入到 Visual Studio 2008 中即时窗口 results Join lstDocs Function docID docID Evaluation of lambda expressions
  • Python中基于FFT的2D卷积和相关

    scipy 或其他流行的库 中是否内置了基于 FFT 的 2D 互相关或卷积函数 有这样的函数 scipy signal correlate2d 直接方法由convolveND将 对于大数据来说很慢 scipy ndimage correl
  • IntegrityError:使用 praw 在 Python 中数据类型不匹配

    我正在尝试编写一个 Reddit 机器人 它接受 fuck 这个词 看看有多少人在 Reddit 上这么说 这是代码 import praw import time import re import sqlite3 username Lew
  • 如何在上下文中运行协程?

    在关于 Context Vars 的 Python 文档中 https docs python org 3 library contextvars htmlContext run 方法被描述为能够在上下文内执行可调用的操作 以便对上下文的可
  • 如何打开/关闭ReactJS“开发模式”?

    开始使用ReactJS道具验证功能 http facebook github io react docs reusable components html prop validation 正如文档所说 出于性能原因 它仅适用于 开发模式 R
  • 如何使用requirejs加载css?

    这是我的 requirejs 配置文件 我在基于角度的项目中使用 require js 如果我可以加载 cssrequirejs我也可以组织我的 css 文件 我是新来的requirejs概念 任何帮助表示赞赏 require config
  • 在 Postgres/SQLAlchemy 上设置 application_name

    查看输出select from pg stat activity 我看到一个名为application name 描述here http www postgresql org docs current static monitoring s
  • AsyncTask 也在 flash 中吗?

    我开发了一款大小为 27mb 的游戏 我将其加载到设备中 它的性能会降低 有时会挂起设备 这个游戏中使用了很多媒体资源 如果我在 android 中制作它 那么我会处理和异步任务 http developer android com ref
  • 如何关闭 iTerm2 中的“滚动历史记录”

    我已经安装了新的 iTerm 2 它在顶部的黄色栏中询问我是否要启用鼠标功能 不幸的是 我已经不记得确切的句子了 一不小心我就同意了 现在 当我在 iTerm 中使用鼠标上的滚轮时 它不再向上滚动 而是触发命令历史记录 就像我按下了向上光标
  • 如何在 Java8 中为 void(非 Void)方法指定函数类型?

    我正在研究 Java 8 以了解如何发挥一等公民的作用 我有以下片段 package test import java util import java util function public class Test public stat
  • 是否可以通过APN反馈系统判断设备上某个应用是否已被卸载?

    如果某个应用程序安装在设备上然后又被卸载 是否有办法使用 APN 反馈服务来确定这一点 反馈服务被记录为可以知道未响应通知的设备 但包含附加信息 例如为什么它不响应以及何时第一次开始不响应等 有什么方法可以确定应用程序是否已被卸载 或者知道
  • 如何在android中从左向右移动图像

    我想使用 Android 动画在模拟器上从左到右翻译图像 我是 Android 动画新手 我怎么能这么做呢 Thanks ll new LinearLayout this ll setLayoutParams new LayoutParam
  • Pyinstaller 找不到 pandas 钩子

    我已经编写了一个简单的 python 脚本 现在我正在尝试制作一个 exe 文件 每当我尝试运行生成的 exe 时 程序都会失败import pandas我收到以下错误 Traceback most recent call last Fil
  • 选择与输入无关的下拉宽度

    我正在尝试使用 Selectize 呈现很长标签的下拉列表 文本可以很宽 但输入对宽度有限制 Selectize 完美地包裹文本 在输入和下拉菜单中 但理想情况下 下拉菜单能够比输入更宽 以实现更好的可读性 是否可以让 Selectize
  • 在 .my.cnf 中配置自定义组?

    如何让 emacs sql mysql 或 mysql 从 my cnf 读取自定义组 从 cli 和 emacs 中调用 mysql 时 我有不同的选项 并且我想知道是否可以通过使用 my cnf 中的自定义组来实现此目的 即 emacs
  • React-Native Link 和 CocoaPods 之间的区别?

    什么是react native link do https github com react native community react native svg https github com react native community
  • 仅在 Windows 上向文本顶部添加额外填充的 Raleway 字体

    我正在使用 Google 的 Web Fonts 提供的 Raleway 字体 我发现在我的 Windows 7 计算机上 使用 IE9 Firefox Chrome Safari 进行测试 附加填充似乎添加到文本顶部 当我在我的 Mac
  • 这是在 React 中将 props 传递给子组件的好方法吗?

    在 React 中 通常我们通过以下方式将 props 传递给子组件 const Parent foo bar baz myFoo myBar myBaz gt
  • 二进制 numpy 数组之间的快速汉明距离计算

    我有两个长度相同的 numpy 数组 其中包含二进制值 import numpy as np a np array 1 1 1 1 1 1 0 1 1 0 1 1 1 0 0 0 0 1 1 1 0 b np array 1 1 1 1 0