在 np.array 中广播函数调用

2024-01-02

我正在尝试创建一个充满对象的 NumPy 数组,我想知道是否有一种方法可以广播到整个数组,让每个对象执行某些操作。

Code:

class player:
    def __init__(self,num = 5):
        self.num = num

    def printnum():
        print(self.num)
...

objs = np.array([player(5),player(6)],dtype=Object)
objs.printnum()

按照目前的情况,这会返回一个错误。我尝试按照手册将 dtype 更改为:_object,但似乎没有任何效果。


numpy 对象数组不会继承该对象的方法。ndarray方法通常作用于整个数组

这也不适用于内置类型,例如:

In [122]: import numpy as np

In [123]: n = 4.0

In [124]: a = np.arange(n)

In [125]: n.is_integer()
Out[125]: True

In [126]: a.is_integer()
---------------------------------------------------------------------------
AttributeError: 'numpy.ndarray' object has no attribute 'is_integer'

Numpy 广播是通过逐元素运算符完成的,例如加法:

In [127]: n
Out[127]: 4.0

In [128]: a
Out[128]: array([ 0.,  1.,  2.,  3.])

In [129]: n + a
Out[129]: array([ 4.,  5.,  6.,  7.])

如果你想基本上打电话print对于数组中的所有元素,您可以简单地重新定义.__repr__()调用的方法print。我要提醒您的是,重写该方法将会丢失信息。

In [148]: class player:
   .....:     def __init__(self, num=5):
   .....:         self.num = num
   .....:     def __repr__(self):
   .....:         return str(self.num)
   .....:     

In [149]: objs = np.array([player(5), player(6)])

In [150]: objs
Out[150]: array([5, 6], dtype=object)

In [151]: print objs
[5 6]

尽管看起来很像,但这并不相同np.array([5,6]) though:

In [152]: objs * 3
----------------------
TypeError: unsupported operand type(s) for *: 'instance' and 'int'

在那里你可以看到重写的缺点__repr__.

更简单的方法是使用您当前的printnum()方法,但在循环中调用它:

In [164]: class player:
   .....:     def __init__(self, num=5):
   .....:         self.num = num
   .....:     def printnum(self):
   .....:         print(self.num)
   .....:         

In [165]: for p in objs:
   .....:     p.printnum()
   .....:
5
6

或者,也许定义您的方法以返回字符串而不是打印字符串,然后进行列表理解:

In [169]: class player:
   .....:     def __init__(self, num=5):
   .....:         self.num = num
   .....:     def printnum(self):
   .....:         return str(self.num)
   .....: 

In [170]: objs = np.array([player(5), player(6)])

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

在 np.array 中广播函数调用 的相关文章

随机推荐

  • ARKit:查找屏幕上SCNNode的坐标

    我有一个简单的 Swift ARKit 设置 其中有一个 SCNNode 和一个在 ARSCNView 中可见的 3D 对象 我想确定该对象在 ARSCNView 上的 2D 坐标 我的意思是对象被绘制到屏幕上时的 x 和 y 坐标 I h
  • 运行较少的服务器端与客户端

    与服务器端相比 在客户端运行 LESS 框架有哪些优点 缺点 如果在客户端运行页面加载时间会受到影响吗 在服务器上 您必须更加小心缓存控制标头 并且会牺牲一点 CPU 能力 在客户端 如果 JS 不可用 它就会中断 对于您的生产系统 在构建
  • 代码辅助 (ctrl+space) 在 Eclipse Kepler 上不起作用 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Code assist ctrl space doesn t work on Eclipse Kepler This happened t
  • 事件 - 命名约定和风格

    我正在学习 C 中的事件 委托 我可以询问您对我选择的命名 编码风格 摘自 Head First C 一书 的看法吗 明天我要教一个朋友这个问题 并试图想出最优雅的方式来解释这些概念 认为 理解一门学科的最好方法就是尝试并教授它 class
  • SELECT 命令计算百分比

    我试图根据每个视频相对于所有其他视频的观看次数来获取数据库中每个视频的百分比 然后 我尝试显示从最高观看次数到最低观看次数的所有视频 并在一个漂亮的 HTML 页面内的侧面显示其百分比 显然 百分比范围为 0 100 且不会超过 我认为最受
  • 为什么 AutoHotkey 会响应“系统找不到文件”错误?

    我是 AutoHotkey 的新手 无法理解为什么这个脚本给我这个错误 Failed to launch program or document Action
  • 如何使用Gtk.events_pending?

    我有这个基本的 测试 应用程序 我想在其中显示一个旋转器 而它正在长时间运行发射进程 带有数据库请求的函数 让用户知道它不是在调试而是正在启动 我在其他帖子中读到可以这样做Gtk events pending 功能 但我不知道如何 在哪里使
  • Jquery ajax 表单提交包含文件

    我有一个很长的表格 其中包含文件附件 这就是我的表格的样子 表单将提交至此操作 HttpPost public ActionResult AddReceivingConfirm DTOreceiving entry IEnumerable
  • 如何在 Mongoose Schema 中存储 URL 值?

    我正在将图像从 IOS 应用程序上传到 Firebase Firebase 返回元数据 包括 type 的 URLURL 我应该存储它的类型String在数据库中像下面的代码一样 或者有特定类型URLs var schema new Sch
  • 自定义流程 - 委托

    我想知道是否可以实施openiddict与实施的授权类型类似的授权授权类型here https identityserver4 readthedocs io en latest topics extension grants html wi
  • Java Web 服务和 SOAP - 更改元素名称

    我正在编写一个返回自定义类型的 java Web 服务 一切工作正常 除了当我查看 SOAP 响应时它不使用名称 myType 它使用 return 这是我的 SOAP 响应 基本上它说 return 我希望它说 mytype S Enve
  • UnicodeEncodeError:“ascii”编解码器无法对位置 35 中的字符 u'\xc5' 进行编码:序号不在范围内(128)

    我目前正在使用姜戈国家 https github com SmileyChris django countries获取表单字段的 ISO 国家 地区名称列表 它在我的网站上显示没有错误 但在 Django 的管理网站上 由于存在非 ASCI
  • 如何为登录和注销用户显示不同的链接?

    当用户未登录时我试图显示 Support Log In 当他们注销时 它应该说 Support Log Out 这是我试图用来让它工作的代码 div class fr ul class rss li a href Support a li
  • 如何使用 R 从 Excel 中提取 URL 并将其与显示的文本进行匹配?

    我有一个包含大量超链接的 Excel 文件 我想编写一个程序来提取 URL 并将其与显示的文本进行匹配 我可以将包含解决方案的 URL 导入到上一个问题 https stackoverflow com questions 24149821
  • x 轴日期与 nvd3 中的 y 轴数据不一致

    I am using NVD3 with Flask and I have dates on the x axis 正如您所看到的 x 轴上的线与点不重合 我在 x 轴上打印出日 月 年和小时 我不明白为什么日期间隔不相等 即 小时 不相同
  • NestJS 拦截器:无法在传出请求上设置 HTTP 标头

    我正在 NestJS 中编写 API 其中有一组通用标头 我决定使用拦截器将标头附加到传出请求中 标头不会附加到请求中 因此请求不断失败 拦截器 import as utils from utils utils import CallHan
  • 文件是如何实现的?

    我很好奇文件在 python 中是如何工作的 文件是如何实现的 以便能够像这样循环 csv file open filename csv r for line in csv file do something with line 如果您使用
  • Scio:使用 Pub/Sub 作为集合源时,groupByKey 不起作用

    我改变了来源WindowsWordCount 示例 https github com spotify scio blob master scio examples src main scala com spotify scio exampl
  • Rails - 从嵌套验证错误消息中省略模型名称

    In my item型号 我有线has many user items validate true来验证相关的user item模型时item得到验证 验证错误消息如下所示 gt gt item errors gt messages nam
  • 在 np.array 中广播函数调用

    我正在尝试创建一个充满对象的 NumPy 数组 我想知道是否有一种方法可以广播到整个数组 让每个对象执行某些操作 Code class player def init self num 5 self num num def printnum