计算 numpy.chararray 中字符出现次数的最快方法

2024-01-07

Python主义者,

计算字符在字符中出现的最快方法是什么numpy.character array.

我正在做以下事情:

In [59]: for i in range(10):
...:     m = input("Enter A or B: ")
...:     rr[0][i] = m
...:     
Enter A or B: B
Enter A or B: B
Enter A or B: B
Enter A or B: A
Enter A or B: B
Enter A or B: A
Enter A or B: A
Enter A or B: A
Enter A or B: B
Enter A or B: A

In [60]: rr
Out[60]: 
chararray([['B', 'B', 'B', 'A', 'B', 'A', 'A', 'A', 'B', 'A']],
          dtype='<U1')

In [61]: %timeit a = rr.count('A')
12.5 µs ± 206 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

In [62]: %timeit d = len(a[a.nonzero()])
3.03 µs ± 54.3 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

我相信一定有更好的方法来快速而优雅地实现这一目标。


It's better to stick to regular NumPy arrays over the chararrays https://docs.scipy.org/doc/numpy/reference/generated/numpy.chararray.html#numpy.chararray :

Note:

chararray 类的存在是为了向后兼容 Numarray,不建议用于新开发。从...开始 numpy 1.4,如果需要字符串数组,建议使用 dtype object_、string_ 或 unicode_ 的数组,并使用 free numpy.char 模块中用于快速矢量化字符串的函数 运营。

对于常规数组,我们提出两种方法。

方法#1

我们可以使用np.count_nonzero https://docs.scipy.org/doc/numpy/reference/generated/numpy.count_nonzero.html来计算True与搜索元素进行比较后的:'A' -

np.count_nonzero(rr=='A')

方法#2

随着chararray仅保留单个字符元素,我们可以通过查看它来更好地优化uint8dtype,然后比较和计数。计数会快得多,因为我们将处理数字数据。实施将是 -

np.count_nonzero(rr.view(np.uint8)==ord('A'))

On Python 2.x, 这将是 -

np.count_nonzero(np.array(rr.view(np.uint8))==ord('A'))

Timings

原始样本数据的计时并缩放至10,000x缩放的 -

# Original sample data
In [10]: rr
Out[10]: array(['B', 'B', 'B', 'A', 'B', 'A', 'A', 'A', 'B', 'A'], dtype='<U1')

# @Nils Werner's soln
In [14]: %timeit np.sum(rr == 'A')
100000 loops, best of 3: 3.86 µs per loop

# Approach #1 from this post
In [13]: %timeit np.count_nonzero(rr=='A')
1000000 loops, best of 3: 1.04 µs per loop

# Approach #2 from this post
In [40]: %timeit np.count_nonzero(rr.view(np.uint8)==ord('A'))
1000000 loops, best of 3: 1.86 µs per loop

# Original sample data scaled by 10,000x
In [16]: rr = np.repeat(rr,10000)

# @Nils Werner's soln
In [18]: %timeit np.sum(rr == 'A')
1000 loops, best of 3: 734 µs per loop

# Approach #1 from this post
In [17]: %timeit np.count_nonzero(rr=='A')
1000 loops, best of 3: 659 µs per loop

# Approach #2 from this post
In [24]: %timeit np.count_nonzero(rr.view(np.uint8)==ord('A'))
10000 loops, best of 3: 40.2 µs per loop
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算 numpy.chararray 中字符出现次数的最快方法 的相关文章

  • TypeError:在 Python 3.8.1 上运行 Pytest 脚本时,参数中缺少必需字段“posonlyargs”

    我在 Python 3 8 1 上创建了一个简单的 Selenium Pytest 自动化脚本 运行脚本后 我看到以下错误 Traceback most recent call last Error messages TypeError r
  • 如何向 scikit-learn KD 树添加/删除数据点?

    我想知道是否可以在创建 scikit learn KDTree 实例后添加或删除数据点 例如 from sklearn neighbors import KDTree import numpy as np X np array 1 1 2
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • neo4j - python 驱动程序,服务不可用

    我对 neo4j 非常陌生 我正在尝试建立从 python3 6 到 neo4j 的连接 我已经安装了驱动程序 并且刚刚开始执行第一步 导入请求 导入操作系统 导入时间 导入urllib 从 neo4j v1 导入 GraphDatabas
  • 如何将输入读取为数字?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 Why are x and y下面的代码中使用字符串而不是整数 注意 在Python 2
  • ASCII - Asciimatics - 如何在代码中实现效果/屏幕

    几篇文章之前 有人建议我研究一下 Python 的 Asciimatics 库 我正在尝试使用以下方法来解决它 样品 https github com peterbrittain asciimatics tree master sample
  • 带条件的 Numpy 均值

    我有纯Python计算平均速度的算法 speed avg speed 0 0 speed count 0 for i in speed if i gt 0 I dont need zeros avg speed i speed count
  • 如何将字典和列表安全转储到 YAML 中?

    我想要输出为下面的 YAML item Food eat Food itemId 42536216 category fruit moreInfo organic 我已使用以下代码按照与上面相同的顺序进行打印 但输出未按预期进行 Code
  • 如何在 Detectron2 中计算并集交集?

    我正在使用 Detectron2 进行对象检测 我已经注册了 pascalvoc 数据集并训练了一个检测模型 如何计算测试数据集的平均 IOU 我知道 detector2 有一个用于计算 IOU 的预定义函数 即 detectorron2
  • GitPython 检查 git pull 是否更改了本地文件

    使用 GitPython 我只想在拉取后本地文件发生更改时才调用函数 例如 如果我在一台单独的计算机上进行推送 然后拉第一台计算机 它按预期工作 但不提供任何输出 理想的输出是已更改的文件列表 或者只是告诉我拉动是否有错误 没有拉动 因为分
  • python 排列有问题

    我在排列方面遇到一些问题 当谈到Python时 我真的是一个大菜鸟 所以任何帮助将不胜感激 假设我在文本文件中有一个范围为 1 6 的列表 例如 它看起来像 1 2 3 4 5 6 我想打开所述 txt 文件并计算这 6 个数字中 N 的所
  • 占据花车的地板

    我发现了两种在 Python 中占据发言权的方法 3 1415 1 and import math math floor 3 1415 第一种方法的问题是它返回一个浮点数 即3 0 第二种方法感觉很笨拙而且太长 在 Python 中是否有替
  • python - 如何使用for循环重新分配数组中的元素

    我有一个 numpy 浮点数组 我想使用 for 循环重新分配不同的值 但 PyCharm 表示未使用新的变量分配 如果我有 请说 for i in array i i 5 它会说 i 是一个未使用的变量 我究竟做错了什么 您需要为数组元素
  • pyCUDA无法打印结果

    最近 我使用 pip 为我的 python3 4 3 安装 pyCUDA 但我在测试示例代码时发现 https documen tician de pycuda tutorial html getting started https doc
  • multiprocessing.Queue 中的 ctx 参数

    我正在尝试使用 multiprocessing Queue 模块中的队列 实施 https docs python org 3 4 library multiprocessing html exchang objects Between p
  • 将二进制图像划分为像素数据“块”

    我使用 Python 和 PIL 作为在二进制图像中嵌入数据的工作的一部分 并且需要分析像素组以确定要操作的适当像素 以便嵌入数据 图像需要被分割成相等的像素数据 块 以供分析 但我正在努力想出一种适当的方法来做到这一点 我尝试过使用 Py
  • 加载pickle时出错

    无法加载 pickle 文件 我正在使用 python 3 5 import pickle data pickle load open D ud120 projects final project final project dataset
  • Seed_data.yaml 文件中有没有办法自动生成第一个模型所依赖的模型?

    我正在使用 Django 2 0 Python 3 7 和 MySql 5 我有以下两个模型 第二个依赖于第一个 class CoopType models Model name models CharField max length 20
  • 为什么 dataclasses.astuple 返回类属性的深层副本?

    在下面的代码中astuple函数正在执行数据类的类属性的深层复制 为什么它不能产生与函数相同的结果my tuple import copy import dataclasses dataclasses dataclass class Dem
  • 嵌套列表的重叠会产生不必要的间隙

    我有一个包含三个列表的嵌套 这些列表由 for 循环填充 并且填充由 if 条件控制 第一次迭代后 它可能类似于以下示例 a 1 2 0 0 0 0 0 0 4 5 0 0 0 0 0 0 6 7 根据条件 它们不重叠 在第二次迭代之后 新

随机推荐

  • 使用 ksoap2-android SOAP 客户端从 WSDL 生成 Java 以在 Android 上使用?

    我必须从 Android 应用程序访问现有的 SOAP Web 服务 我已获得一些描述 Web 服务的 WSDL 文件 读一些SO的其他答案 https stackoverflow com questions 297586 how to c
  • C# - 在 div id 上使用 FindControl 时出错

    我有一个 ASP NET 站点 我试图通过 C 代码隐藏文件中的 ID 访问 div 元素 本质上我想查看 div 元素是否存在 如果存在 则更改其属性 我发现许多资源都指向十几种不同的解决方案 但似乎没有一个有效 ASP Net 页面上的
  • Team Foundation Server 无法构建。缺少库或组件?

    我正在尝试使用 TFS 和构建服务器创建构建 这是我第一次尝试构建服务器 但进展并不顺利 我正在使用 Visual Studio 2012 和 TFS 2012 该项目是用 VB Net 编写的 并使用了相当多的参考资料 当我在我的开发机器
  • windows下是否可以删除某个进程打开的文件?

    出于测试和模拟的目的 我想删除我的进程当前打开的文件 The 创建文件文档 http msdn microsoft com en us library aa363858 28v VS 85 29 aspx声明可以以某种模式打开文件 FILE
  • 无法打开主机 WCF REST 服务

    我正在尝试实现一些 WCF 和 REST 服务来在我的服务器上上传文件 并且我找到了一些我正在尝试实现的代码 但尚未成功 My code class Program static void Main string args string a
  • 如何设置 Dojo 对话框打开的位置?

    我有一个 Dojo 对话框 当用户单击页面上的元素时会打开该对话框 我想控制它打开的位置 我真的希望它在单击的其他 dom 元素旁边 相对于 打开 但我似乎可以弄清楚如何执行上述任一操作 感谢您的任何建议 打开一个与 dojo 相对于单击位
  • 引入预检 CORS 请求背后的动机是什么?

    跨域资源共享是一种允许网页向另一个域 从维基百科 https en wikipedia org wiki Cross origin resource sharing 过去几天我一直在摆弄 CORS 我想我对一切的工作原理有了很好的理解 所以
  • 在浏览器中播放 HTML5 视频 - 什么适用于大多数 Android 设备?

    我正在尝试让 HTML5 视频在移动设备上播放 它们似乎在最新版本的 iOS 上运行良好 但在 Android 设备上却出现了很多不一致的情况 我正在使用 video js 并监听缩略图上的点击 这反过来会用 HTML5 视频替换该元素并自
  • 当每个字符位于一个 div 中时,如何分别对它们应用样式?

    我想为我的一个 div 的每个字母提供不同的背景 CSS 样式 例如 div class hello 1999 div 所以每个词背后都有一个类似计数器的背景 以供参考 如何在不将 div 类一一分离的情况下做到这一点 如果您想在页面加载后
  • 关于重定向的 Google 脚本无法正常工作并出现特殊错误,发生了什么

    相同的代码 从未修改过 然而 自 9 月份以来 javascript top location href https and window open https top 以上所有内容都停止工作并且出现错误 尝试导航顶级窗口的框架使用 允许用
  • 最新 PlayServices 8.3 中的 GoogleSignInAccount 内部崩溃

    Play 服务的最新版本 8 3 存在与 GoogleSignInAccount 相关的问题 我们收到了由此产生的崩溃 这是堆栈跟踪 Android 4 4 4 Manufacturer Sony Model D5503 Date Thu
  • C 中的递归。将非递归函数变成递归函数

    gcd 应该是一个递归函数 它应该返回 void 它应该采用两个正整数并将 GCD 放在第三个参数中 这是我编码的 gcd 函数 然而 我意识到这不是一个递归函数 我如何更改此代码 使其成为递归函数 void gcd int x int y
  • 如何使用 Access VBA 在 textBox.Setfocus 之后选择 TextBox 中的所有文本

    当我单击 或双击 Access 表单的文本框中时 我需要选择其中的所有文本 我尝试了以下代码 但没有成功 Me txt CompraPreco SelStart 0 Me txt CompraPreco SelLength Len Me t
  • Java 双重比较 epsilon

    我编写了一个类 用 Java 中的两个双精度数来测试相等 小于和大于 我的一般情况是比较价格 精确度可以达到半美分 59 005 与 59 395 相比 我选择的 epsilon 适合这些情况吗 private final static d
  • 向面板添加垂直滚动条

    我正在尝试做一个Panel可滚动 但只能垂直滚动 所以AutoScroll不起作用 因为子控件必须越过左边缘 那么这是如何做到的呢 尝试 仅 垂直滚动 自动滚动需要为 false 才能接受更改 mypanel AutoScroll fals
  • 在 R 中设置 kmeans 的静态中心

    我想根据预先确定的中心点 my center Points 对长和纬度 my long lats 列表进行分组 当我跑步时 k lt kmeans as matrix my long lats centers as matrix my ce
  • 使用 UIPasteBoard 复制图像 (Swift)

    我最近看到这个项目 用户可以从自定义键盘上点击 GIF 他们会看到一个 复制的 工具栏出现 我有一个问题 如何在产品中重现此工具提示GIF 教程 http o aolcdn com hss storage midas 27c2fb5dfec
  • jQuery 灯箱画廊

    是否存在具有标准灯箱功能的 jQuery 插件 在 灯箱 窗口中 我想在同一 灯箱 窗口中的某处 左侧 底部等 将当前图像和其余图 像显示为缩略图 ColorBox http colorpowered com colorbox 一个轻量级
  • 对 Automapper 配置文件进行单元测试

    我的确想要测试自定义逻辑CreateMap方法 我愿意NOT想要测试某些类型的映射是否存在 我该怎么做或者我需要知道哪些课程 我很感激该文件的每一个提示 Automapper 单元测试似乎很少见 public class UnitProfi
  • 计算 numpy.chararray 中字符出现次数的最快方法

    Python主义者 计算字符在字符中出现的最快方法是什么numpy character array 我正在做以下事情 In 59 for i in range 10 m input Enter A or B rr 0 i m Enter A