Numpy 结构化数组无法完成基本 numpy 操作

2023-12-15

我想操纵namednumpy 数组(加、乘、连接……)

我定义了结构化数组:

types=[('name1', int), ('name2', float)]
a = np.array([2, 3.3], dtype=types)
b = np.array([4, 5.35], dtype=types)

a 和 b 的创建使得

a
array([(2, 2. ), (3, 3.3)], dtype=[('name1', '<i8'), ('name2', '<f8')])

但我真的想要a['name1']只是2,不array([2, 3])

同样,我想要a['name2']仅为 3.3

这样我就可以总结c=a+b,预计是一个长度为 2 的数组,其中c['name1']是 6 并且c['name2'] is 8.65

我怎样才能做到这一点?


定义一个结构化数组:

In [125]: dt = np.dtype([('f0','U10'),('f1',int),('f2',float)])
In [126]: a = np.array([('one',2,3),('two',4,5.5),('three',6,7)],dt)
In [127]: a
Out[127]: 
array([('one', 2, 3. ), ('two', 4, 5.5), ('three', 6, 7. )],
      dtype=[('f0', '<U10'), ('f1', '<i8'), ('f2', '<f8')])

以及具有相同数据的对象 dtype 数组

In [128]: A = np.array([('one',2,3),('two',4,5.5),('three',6,7)],object)
In [129]: A
Out[129]: 
array([['one', 2, 3],
       ['two', 4, 5.5],
       ['three', 6, 7]], dtype=object)

加法之所以有效,是因为它(迭代地)将操作委托给所有元素

In [130]: A+A
Out[130]: 
array([['oneone', 4, 6],
       ['twotwo', 8, 11.0],
       ['threethree', 12, 14]], dtype=object)

结构化加法不起作用

In [131]: a+a
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-131-6ff992d1ddd5> in <module>()
----> 1 a+a

TypeError: ufunc 'add' did not contain a loop with signature matching types 
dtype([('f0', '<U10'), ('f1', '<i8'), ('f2', '<f8')]) dtype([('f0', '<U10'), ('f1', '<i8'), ('f2', '<f8')]) 
dtype([('f0', '<U10'), ('f1', '<i8'), ('f2', '<f8')])

让我们尝试逐个字段添加:

In [132]: aa = np.zeros_like(a)
In [133]: for n in a.dtype.names: aa[n] = a[n] + a[n]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-133-68476e5d579e> in <module>()
----> 1 for n in a.dtype.names: aa[n] = a[n] + a[n]

TypeError: ufunc 'add' did not contain a loop with signature matching types 
dtype('<U10') dtype('<U10') dtype('<U10')

哎呀,不太行 - 字符串数据类型没有加法。但我们可以单独处理字符串字段:

In [134]: aa['f0'] = a['f0']
In [135]: for n in a.dtype.names[1:]: aa[n] = a[n] + a[n]
In [136]: aa
Out[136]: 
array([('one',  4,  6.), ('two',  8, 11.), ('three', 12, 14.)],
      dtype=[('f0', '<U10'), ('f1', '<i8'), ('f2', '<f8')])

或者我们可以将字符串数据类型更改为对象:

In [137]: dt1 = np.dtype([('f0',object),('f1',int),('f2',float)])
In [138]: b = np.array([('one',2,3),('two',4,5.5),('three',6,7)],dt1)
In [139]: b
Out[139]: 
array([('one', 2, 3. ), ('two', 4, 5.5), ('three', 6, 7. )],
      dtype=[('f0', 'O'), ('f1', '<i8'), ('f2', '<f8')])
In [140]: bb = np.zeros_like(b)
In [141]: for n in a.dtype.names: bb[n] = b[n] + b[n]
In [142]: bb
Out[142]: 
array([('oneone',  4,  6.), ('twotwo',  8, 11.), ('threethree', 12, 14.)],
      dtype=[('f0', 'O'), ('f1', '<i8'), ('f2', '<f8')])

Python 字符串确实有一个__add__,定义为连接。 Numpy dtype 字符串没有该定义。 Python 字符串可以乘以整数,但否则会引发错误。

我的猜测是pandas诉诸于我刚才所做的事情。我怀疑它是否在编译代码中实现了数据帧添加(某些特殊情况除外)。如果数据类型允许,它可能会逐列工作。它似乎也可以自由切换到对象数据类型(例如,具有以下两种类型的列)np.nan和一个字符串)。时间可能会证实我的猜测(我没有pandas安装在此操作系统上)。

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

Numpy 结构化数组无法完成基本 numpy 操作 的相关文章

  • 出现导入错误:无法从“随机”导入名称“随机”[重复]

    这个问题在这里已经有答案了 我在我的计算机上多次运行我的代码 但没有出现此错误 但突然间这个来了 File e Python 3 8 0 lib site packages comtypes client code cache py lin
  • 在 python + Flask + Gunicorn + nginx + Compute Engine 应用程序中从 Google Cloud Storage 读取文件失败

    在 python Flask Gunicorn nginx Compute Engine 应用程序中读取从 Google Cloud Storage 下载的文件失败 代码链接 https github com samuq CE test h
  • Python - 包和设置文件

    我有一个 python 包 需要从我的项目目录中提取设置 这是我的项目当前的结构 Project bin mypackage package files Project myproject project files start py se
  • 地图与星图的性能?

    我试图对两个序列进行纯Python 没有外部依赖 逐元素比较 我的第一个解决方案是 list map operator eq seq1 seq2 然后我发现starmap函数来自itertools 这看起来和我很相似 但事实证明 在最坏的情
  • Python 可以使用单独的媒体播放器打开 mp3 文件吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 是否可以开一个mp3Python 中的文件 可以使用Popen 我并不是要在程序中运行它 我的意思是作为媒体播放器中的一个单独窗口或其
  • Pygame 玩家精灵没有出现

    我一直在为学校计算机课做这个项目 但无法让玩家精灵出现 有人可以帮忙吗 当我运行主游戏循环时 除了玩家精灵之外 所有内容都正确显示 它应该由于箭头输入而在屏幕上移动并受到重力的影响 当我删除图像并仅使用对象类和矩形时 该代码也有效 impo
  • 将列表传递给 PyCrypto 中的 AES 密钥生成器

    我尝试使用 Pycrypto 生成 AES 密钥 但收到以下错误 类型错误 列表 不支持缓冲区接口 对于以下声明 aescipher AES new mykey AES MODE ECB mykey 属于类型list并包含 18854347
  • 如何最好地将包含列表或元组的 Pandas 列提取到多个列中[重复]

    这个问题在这里已经有答案了 我不小心用错误重复的链接关闭了这个问题 这是正确的 Pandas 将列表的列拆分为多列 https stackoverflow com questions 35491274 pandas split column
  • 在 Windows 上将 NumPy 与 BLAS 链接

    我正在尝试在 Windows 系统上安装 Theano 并且需要安装 BLAS 和 LAPACK 我的 System32 文件夹中有这些的 dll 文件 当我运行 numpy config来自 Anaconda 的 show 库的路径正确显
  • PyPI 项目页面中的“Py 版本”是什么意思?这有关系吗?

    我注意到 大多数在 PyPI 上发布的项目在其项目页面中都包含 Py 版本 元数据 但它们的值各不相同 如果包不是通用包或不是纯 python 包 那么它们的值是不同的 这是可以理解的 以便表示它们的目标平台 例如鼻页 https pypi
  • 为图例中的点设置固定大小

    我正在制作一些散点图 我想将图例中的点的大小设置为固定的相等值 现在我有这个 import matplotlib pyplot as plt import numpy as np def rand data return np random
  • 如何在树莓派上更新到最新的 python 3.5.1 版本?

    我昨天拿到了 Raspberry Pi 我已经在尝试用它来编写代码了 我有一个计划在其上运行的程序 但它仅与 Python 版本 3 5 0 或 3 5 1 兼容 并且我在互联网上找到的所有内容似乎都已经过时 与 Python 2 有关 或
  • import numpy 和 import numpy as np 之间的区别

    我明白 如果可能的话 应该使用 import numpy as np 这有助于避免由于命名空间引起的任何冲突 但我注意到虽然下面的命令有效 import numpy f2py as myf2py 以下不 import numpy as np
  • 检测图像是否损坏或损坏

    我需要以编程方式检查用户在我的应用程序上选择作为壁纸的图像是否已损坏或损坏 基本上我为用户提供了选择自己的图像作为壁纸的选项 现在 当图像加载时 我只想检查它是否已损坏 如果您正在寻找 PHP 解决方案而不是 javascript 解决方案
  • sklearn 中带有词袋和附加情感特征的文本分类器

    我正在尝试构建一个分类器 除了词袋之外 还使用情绪或主题 LDA 结果 等特征 我有一个包含文本和标签的 pandas DataFrame 并且想添加情感值 5 到 5 之间的数字 和 LDA 分析结果 带有句子主题的字符串 我有一个工作词
  • 在字典理解中为 locals() 添加下标失败并出现 KeyError [重复]

    这个问题在这里已经有答案了 我对 Python 的奇怪行为感到困惑locals 基本上我想从字典中获取一个项目locals 在字典理解中 但它失败了 这是一个非常基本的事情 所以 gt gt gt foo 123 gt gt gt bar
  • 如何从python导入路径中删除当前目录

    我想使用 Mercurial 存储库hg本身 也就是说 我克隆了 Mercurialhttps www mercurial scm org repo hg https www mercurial scm org repo hg并想运行一些h
  • 使用 Pandas 和 Group By 绘制堆叠直方图

    我正在使用如下所示的数据集 Gender Height Width Male 23 4 4 4 Female 45 4 4 5 我想可视化高度和宽度的堆叠直方图 我希望每个图有两个堆叠的直方图 每个性别一个 这是文档中的堆叠直方图 如果存在
  • 用于桌面数据库应用程序的 Python 框架

    是否有一个框架可以为Python开发桌面数据库应用程序 一些带有CRUD屏幕的屏幕 我正在寻找类似于 Windows 窗体的东西 能够将 TextField Combos 和其他 UI 隐喻与datasets连接到关系数据库例如 MySQL
  • Python pip 安装错误 [SSL: CERTIFICATE_VERIFY_FAILED]

    我已经尝试解决这个问题有一段时间了 由于某种原因 我陷入了 ssl 问题 并且不知道发生了什么 问题 我已经安装了 python2 7 和 easy install2 7 但是当尝试使用 easy install2 7 安装 pip 时 出

随机推荐

  • 附加 .mdf 文件时数据库“无法打开,因为它是版本 661”

    我正在尝试将 MvcMusicStore mdf 附加到 sql server 2008 R2 Management Studio 中的 SQLEXPRESS 实例 sql server 版本 10 0 2531 我从这个项目中得到了数据库
  • 滚动笔记本选项卡 Tkinter

    我想制作很多笔记本选项卡 我想将它们放在画布中并添加水平滚动条 以便我可以滚动它们 我设置了画布大小 但当我添加新选项卡时画布大小不断变化 另外 滚动条不起作用 你能告诉我我做错了什么吗 该程序没有向我显示任何错误 这是代码 from tk
  • .ajaxform 不在验证提交处理程序内工作?

    我在提交之前使用 jquery 验证插件来验证表单 在submitHandler中我使用ajax请求通过ajax发布表单 在我使用 ajax 发送请求之前 但现在表单有图像 而且很难 通过普通的ajax请求序列化文件元素 因此我使用了这个插
  • 子集和的动态规划方法

    给定以下输入 10 4 3 5 5 7 Where 10 Total Score 4 4 players 3 Score by player 1 5 Score by player 2 5 Score by player 3 7 Score
  • java.lang.ClassNotFoundException:org.apache.xmlbeans.XmlOptions

    我正在尝试在 servlet 中使用 POI 将上传的文件处理为 Excel 文件 public static String readExcel InputStream inp InputStream inp null StringBuil
  • 有效的 Java - 尽管创建了多个实例,但方法调用时间相同

    我正在学习 Effective Java 在本书的第 5 条中 Joshua Bloch 谈到了避免创建不必要的对象 一个示例演示了可变的 Date 对象 一旦计算出它们的值就永远不会被修改 这是 不好的做法 public Person D
  • 在 mvc 中加载 2 个下拉菜单的更好方法

    这就是我在页面加载状态和城市下拉列表中加载的方式 我的控制器方法 这是页面加载时调用的第一个方法 public ActionResult Index var states GetStates var cities Enumerable Em
  • 在 Outlook 邮件中发送邮件后 itemId 发生变化

    我正进入 状态itemId之后的邮件项目saveAsync在撰写模式下 邮件项目发送后 项目Id进来Office context mailbox item itemId与撰写模式中给出的不同 用于获取的代码itemId在撰写模式下 var
  • 远程服务器上的 mysqldump

    如果有两台机器客户端和服务器 从客户端如何执行 mysqldump 到服务器 以便转储在客户端上可用而不存储在服务器中 Thanks 这是一个生成 mysqldump 的 PHP 脚本 它直接输出到客户端 不会在服务器上创建任何文件 htt
  • 什么允许函数在返回参数时隐式取消引用参数?

    在读的时候如何借用可变引用而不将其传递给函数 OP 的功能如下 fn deref lt a b a T gt t a mut b mut T gt a mut T t 这对我来说很有意义 然而 他们也指出 正文中的显式取消引用 不需要 fn
  • Java中删除注释的脚本

    有谁知道如何 或过程 在构建时从 Java 类文件中删除注释 当使用 Ant 构建项目时 我想对项目中的特定包执行此操作 任何 ANT 脚本或一些自定义代码最受欢迎 编译后没有任何注释 class file
  • 如何使用 python asyncio 编写 Consumer.Producer 代码?

    我的Python版本是3 6 1 我写了一些东西来使用 Python asyncio 实现消费者 生产者模型 但它并没有按预期工作 四个活动均已创建 但没有任何打印导出 async def consumer queue id while T
  • 使用管道时出现“文件名、目录名或卷标语法不正确。”

    当我在我的机器上运行以下命令 或任何带有管道 的命令 时 目录 findstr 目录 我收到以下消息 文件名 目录名或卷标语法不正确 单独运行 dir 命令或 findstr 命令效果很好 卷标是 volC 盘中的卷是 OSDisk卷序列号
  • wpf 中自定义镀铬 Windows

    我尝试使用 WindowStyle None 和AllowsTransparency True 在 wpf 中创建自定义镀铬窗口 但是 当我最大化窗口时 它会覆盖整个屏幕 并超出其边缘 它还会隐藏我的窗口底部的 Windows 栏 屏幕 就
  • 枚举器的行为会根据我们引用它的方式而变化吗?

    将列表枚举器的引用包装在类中似乎会改变其行为 匿名类的示例 public static void Main var list new List
  • 如何在swift中重载赋值运算符

    我想重写 CGFloat 的 运算符 如下所示 func inout left CGFloat right Float left CGFloat right 所以我可以执行以下操作 var A CGFloat 1 var B Float 2
  • SQL Server:计算每月总销售额,包括空月

    我正在尝试计算一个月内产品的总销售额 但我希望它包括任何 空 月份 没有销售额 并且仅选择最近 12 个月 这是我到目前为止的代码 declare ProductNo int set ProductNo 1234 SELECT YEAR o
  • 如何向 MySQL 表添加“权重”并根据这些权重选择随机值?

    我想创建一个表 每行都包含某种权重 然后我想选择概率等于 该行的权重 所有行的权重 的随机值 例如 如果有 5 行 权重为 1000 中的 1 2 3 4 5 我会得到大约 1 15 1000 67 倍第一行 依此类推 该表需要手动填写 然
  • 使用PowerShell查找字符串中的差异

    所以我正在使用 Compare Object 它对于比较文件效果很好 但如果只是字符串呢 有没有办法找出字符串之间的差异 CompareTo 擅长报告存在差异 但不报告差异是什么 例如 PS gt a PowerShell rocks PS
  • Numpy 结构化数组无法完成基本 numpy 操作

    我想操纵namednumpy 数组 加 乘 连接 我定义了结构化数组 types name1 int name2 float a np array 2 3 3 dtype types b np array 4 5 35 dtype type