从 numpy 数组中的每个字符串中提取第一个字母

2023-12-13

我有一个巨大的 numpy 数组,其中元素是字符串。我喜欢用字符串的第一个字母替换字符串。例如如果

C[0] = 'A90CD'

我想将其替换为

C[0] = 'A'

简而言之,我正在考虑在循环中应用正则表达式,其中我有一个正则表达式字典,例如

'^A.+$' => 'A'

'^B.+$' => 'B' ETC

如何将此正则表达式应用于 numpy 数组?或者有没有更好的方法来达到同样的目的?


这里不需要正则表达式。只需将数组转换为 1 字节字符串,使用astype -

v = np.array(['abc', 'def', 'ghi'])
>>> v.astype('<U1')
array(['a', 'd', 'g'],
      dtype='<U1')

或者,您可以更改其view并大步迈进。这是针对相同大小的字符串的稍微优化的版本。 -

>>> v.view('<U1')[::len(v[0])]
array(['a', 'd', 'g'],
      dtype='<U1')

这是更通用的版本.view方法,但这适用于不同长度的字符串数组。感谢 Paul Panzer 的帮助建议 -

>>> v.view('<U1').reshape(v.shape + (-1,))[:, 0]
array(['a', 'd', 'g'],
      dtype='<U1')

表现

y = np.array([x * 20 for x in v]).repeat(100000)

y.shape
(300000,)

len(y[0])   # they're all the same length - `abcabcabc...`
60

现在,时间安排——

# `astype` conversion

%timeit y.astype('<U1')
100 loops, best of 3: 5.03 ms per loop
# `view` for equal sized string arrays 

%timeit y.view('<U1')[::len(y[0])]
100000 loops, best of 3: 2.43 µs per loop
# Paul Panzer's version for differing length strings

%timeit y.view('<U1').reshape(y.shape + (-1,))[:, 0]
100000 loops, best of 3: 3.1 µs per loop

The view方法是速度大幅提升.

但是,请谨慎使用,因为内存是共享的。


如果您对更通用的解决方案感兴趣,可以找到您第一个字母(无论它在哪里),我想说最快/最简单的方法是使用re模块,编译模式并在列表理解中搜索。

>>> p = re.compile('[a-zA-Z]')
>>> [p.search(x).group() for x in v]
['a', 'd', 'g']

而且,它在上述相同设置下的性能 -

%timeit [p.search(x).group() for x in y]
1 loop, best of 3: 320 ms per loop
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 numpy 数组中的每个字符串中提取第一个字母 的相关文章

  • Python - StatsModels、OLS 置信区间

    在 Statsmodels 中 我可以使用以下方法拟合我的模型 import statsmodels api as sm X np array 22000 13400 47600 7400 12000 32000 28000 31000 6
  • 如何在 Python 中检索 for 循环中的剩余项目?

    我有一个简单的 for 循环迭代项目列表 在某些时候 我知道它会破裂 我该如何退回剩余的物品 for i in a b c d e f g try some func i except return remaining items if s
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 根据列值突出显示数据框中的行?

    假设我有这样的数据框 col1 col2 col3 col4 0 A A 1 pass 2 1 A A 2 pass 4 2 A A 1 fail 4 3 A A 1 fail 5 4 A A 1 pass 3 5 A A 2 fail 2
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • 从字符串末尾删除多个字符类型

    我有一个构建地址字段的循环 其中一些字段在字符串末尾可能为空 List
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • Pandas:merge_asof() 对多行求和/不重复

    我正在处理两个数据集 每个数据集具有不同的关联日期 我想合并它们 但因为日期不完全匹配 我相信merge asof 是最好的方法 然而 有两件事发生merge asof 不理想的 数字重复 数字丢失 以下代码是一个示例 df a pd Da
  • Jupyter Notebook 内核一直很忙

    我已经安装了 anaconda 并且 python 在 Spyder IPython 等中工作正常 但是我无法运行 python 笔记本 内核被创建 它也连接 但它始终显示黑圈忙碌符号 防火墙或防病毒软件没有问题 我尝试过禁用两者 我也无法
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • 每个 X 具有多个 Y 值的 Python 散点图

    我正在尝试使用 Python 创建一个散点图 其中包含两个 X 类别 cat1 cat2 每个类别都有多个 Y 值 如果每个 X 值的 Y 值的数量相同 我可以使用以下代码使其工作 import numpy as np import mat
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • 有人用过 Dabo 做过中型项目吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正处于一个新的 ERP 风格的客户端 服务器应用程序的开始阶段 该应用程序是作为 Python 富客户端开发的 我们目前正在评估 Dabo
  • 使用 Python 绘制 2D 核密度估计

    I would like to plot a 2D kernel density estimation I find the seaborn package very useful here However after searching
  • 使用其构造函数初始化 OrderedDict 以便保留初始数据的顺序的正确方法?

    初始化有序字典 OD 以使其保留初始数据的顺序的正确方法是什么 from collections import OrderedDict Obviously wrong because regular dict loses order d O
  • Scrapy:如何使用元在方法之间传递项目

    我是 scrapy 和 python 的新手 我试图将 parse quotes 中的项目 item author 传递给下一个解析方法 parse bio 我尝试了 request meta 和 response meta 方法 如 sc
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • Python 类继承 - 诡异的动作

    我观察到类继承有一个奇怪的效果 对于我正在处理的项目 我正在创建一个类来充当另一个模块的类的包装器 我正在使用第 3 方 aeidon 模块 用于操作字幕文件 但问题可能不太具体 以下是您通常如何使用该模块 project aeidon P

随机推荐

  • 如何从 Azure 网站计划作业连接远程 SFTP

    我有一个控制台应用程序 它将被安排为 AZURE 网站中的作业 我想从该控制台应用程序连接远程 SFTP 并获取所有文件并将它们保存在 AZURE 网站内的我的文件夹中 此外 如果可能的话 在传输后将它们从 SFTP 中删除 首先 在这种情
  • Delphi 中的递归类实例大小

    Delphi中有没有办法获取类实例的实际大小 我知道 TObject 类的 InstanceSize 方法 但该方法不会为对象成员递归调用自身 例如 假设我们有两个类 type MyClass1 class private myVar1 i
  • 确认 TF2 在训练时使用我的 GPU

    我想知道在按照 TF 教程中的建议将训练数据存储在 GPU 上后 是否有办法确认我的 TF 模型正在 GPU 上进行训练 这是一个简短的代码示例 import tensorflow as tf print Num GPUs Availabl
  • 如何通过脚本向现有的谷歌表单项添加验证?

    我正在尝试为我的谷歌表单文本项添加验证 特别是文本验证 然而 在我看来 setValidation 函数仅适用于已知类型的项目 例如TextItem 据我了解 如果我通过拉取表单项 getItemById 我会得到一个通用物品 它仍然具有
  • 执行标量以在没有返回记录的情况下捕获错误

    我有下面的代码 Dim lJobName As String SQLCommand CommandText Select JobName from Jobs where Id Id SQLCommand Parameters Add New
  • 合并属于每个标准的不同产品

    我必须转换以下xml内容
  • React,状态设置器不更新值[重复]

    这个问题在这里已经有答案了 useState 无法设置文件对象 我在代码中添加了注释来解释发生的情况 const file setFile useState
  • 自定义控件中的组属性

    在我们的 IDE 例如 Visual Studio 中 如果我们显示 System Windows Forms Button 控件的属性 我们会看到一些公开另一组属性的属性 例如 平面外观 字体 位置 边距 等等 我想在自定义控件中做类似的
  • 在 ASP.NET Core Web 应用程序中使用 Identity 登录期间向用户添加声明

    Edit 2 终于想通了 查看下面已接受的答案 Edit 按照 Jason Pan 的指示 我尝试了完整的源代码 https github com affableashish blazor server auth tree feature
  • Angular 2 用空值实例化类

    如何将成员实例化为具有空值的类 Plunkr 我实例化为 public members new MemberClass 但控制台显示 Members 所以我无法设置默认的空值 所以基本上我正在尝试复制一个空结构 例如 this member
  • Highcharts - yAxis 最大数据刻度间隔

    我正在尝试动态设置最大数字的最大值 我不确定我哪里做错了 有什么帮助吗 在线演示 预期的 我得到什么 PS 我想找到最大值 例如 本例中为 100 并表明第一个 yAxisLabel 和下一个值应为负 20 等 图1 数值 39 35 19
  • 异常安全蹦床的设计模式

    这个问题源于here 然而 上一个问题的措辞非常糟糕 实际上是错误的 以至于建议我从头开始再问一次 我有一个 C 函数指针表 一些 C 代码 让我们称之为 lib X 有一个基本构建块 让我们称之为 X 对象 每个 X 对象都可以调用该表上
  • PostgreSQL如何在多个CPU之间拆分查询

    我有一个商店程序 DO STUFF obj rowFromMyTable 这需要 obj 并处理一些数据并将结果保存在独立的表中 所以我处理对象的顺序并不重要 DO STUFF objA DO STUFF objB lt gt DO STU
  • 如何在php中进行调度

    我的服务器上有一些文件 如何每天以编程方式打开它们一次 别理他们 http site com scripts video php http site com scripts music php 没有我的手 就像调度 自动 一样 即使我睡觉并
  • 语法错误:插入 } 来完成 ClassBody

    我创建了一个方法 但不断收到错误 我需要在方法末尾包含一个 我把 放进去 错误仍然存 在 如果我随后删除该 先前的方法将弹出相同的错误 并且该错误以前不存在 换句话说 如果我在最近的方法上输入 那么错误只会保留在那里 如果我删除它 它会在我
  • 加密安全的伪随机随机洗牌 python 中的列表或数组

    我需要一个使用 CSPRNG 加密安全伪随机数生成器 的洗牌函数 并且可以手动播种以获得相同种子的相同输出 内置的random shuffle 在Python中可以手动播种 但不适合加密用途并将在 python 3 11 版本中删除 Cry
  • 如何对多个变量应用单个注释?

    我是菜鸟Java Annotation并一直在寻找申请单身annotation同时作用于多个变量 Code Document collection users public class User private ObjectId id No
  • 如何在 R 中用 NA 替换缺失的空格?

    我正在处理遗传数据 并且有一个巨大的输出文件 制表符分隔的文本文件 其中某些列中缺少值 这些保留为空白 我想用 NA 或 更改空白 我怎样才能在 R 中做到这一点 您是否真的尝试过读取您的文件 在下面 read table 论证na str
  • 使用 Javascript 更改 HTML 标签内特定文本的颜色

    这个问题说明了一切 例如我有以下 HTML 代码 span Lorem ipsum dolor sit amet consectetur adipisicing elit sed do eiusmod tempor span 如何更改上面任
  • 从 numpy 数组中的每个字符串中提取第一个字母

    我有一个巨大的 numpy 数组 其中元素是字符串 我喜欢用字符串的第一个字母替换字符串 例如如果 C 0 A90CD 我想将其替换为 C 0 A 简而言之 我正在考虑在循环中应用正则表达式 其中我有一个正则表达式字典 例如 A gt A