具有非标量输出的 Numpy 矢量化函数

2024-01-03

我正在尝试对输出列表的函数进行矢量化。我希望将 numpy 列表中的所有值提供给它,并让它返回一个矩阵,这样每一行都是输入向量中元素的输出。

import numpy as np

def func(x, n):
    o = []
    for i in range(n):
        o.append(x+i)
    return o

vec_func = np.vectorize(func)
matrix = vec_func(np.asarray([0, 1, 2]), 10)

但是我收到错误

ValueError:使用序列设置数组元素。

我怎样才能解决这个问题?


frompyfunc可能会更好:

In [525]: def fun(x):
     ...:     return x+.1, x+.2, x+.3
     ...: 

我指定 1 个输入、3 个输出值。它返回 dtype 对象:

In [526]: np.frompyfunc(fun,1,3)(np.arange(5))
Out[526]: 
(array([0.1, 1.1, 2.1, 3.1, 4.1], dtype=object),
 array([0.2, 1.2, 2.2, 3.2, 4.2], dtype=object),
 array([0.3, 1.3, 2.3, 3.3, 4.3], dtype=object))

这是一个由 3 个数组组成的元组。它们可以变成一个二维数组stack:

In [527]: np.stack(_, 1)
Out[527]: 
array([[0.1, 0.2, 0.3],
       [1.1, 1.2, 1.3],
       [2.1, 2.2, 2.3],
       [3.1, 3.2, 3.3],
       [4.1, 4.2, 4.3]], dtype=object)

我可以更进一步astype(float).

当然,我认为这是一个玩具功能。对于这么简单的事情没有必要使用vectorize.

In [528]: fun(np.arange(5))
Out[528]: 
(array([ 0.1,  1.1,  2.1,  3.1,  4.1]),
 array([ 0.2,  1.2,  2.2,  3.2,  4.2]),
 array([ 0.3,  1.3,  2.3,  3.3,  4.3]))

所有这些vectorize需求是otypes范围:

In [536]: np.vectorize(fun, otypes='ddd')(np.arange(5))
Out[536]: 
(array([ 0.1,  1.1,  2.1,  3.1,  4.1]),
 array([ 0.2,  1.2,  2.2,  3.2,  4.2]),
 array([ 0.3,  1.3,  2.3,  3.3,  4.3]))

如果函数返回一个数组而不是元组或列表,我们可以使用signature:

In [546]: def fun(x):
     ...:     return np.array([x+.1, x+.2, x+.3])

In [547]: np.vectorize(fun, signature='()->(n)')(np.arange(5))
Out[547]: 
array([[ 0.1,  0.2,  0.3],
       [ 1.1,  1.2,  1.3],
       [ 2.1,  2.2,  2.3],
       [ 3.1,  3.2,  3.3],
       [ 4.1,  4.2,  4.3]])

或者对于原始的元组/列表情况,将其包装在 lambda 中,np.vectorize(lambda x:np.array(fun(x)), signature='()->(n)')

经验表明,frompyfunc方法是最快的。vectorize使用 otypes 有点慢(但它使用frompyfunc). signature是较新的方法,使用不同的代码,并且速度稍慢。


与你的新func, the signature方法仍然有效。我添加了excluded所以它不会尝试broadcast the n争论:

In [553]: np.vectorize(lambda x,n:np.array(func(x,n)), signature='()->(n)',excluded=[1])(np.arange(5),3)
Out[553]: 
array([[0, 1, 2],
       [1, 2, 3],
       [2, 3, 4],
       [3, 4, 5],
       [4, 5, 6]])
In [554]: np.vectorize(lambda x,n:np.array(func(x,n)), signature='()->(n)',excluded=[1])(np.arange(5),7)
Out[554]: 
array([[ 0,  1,  2,  3,  4,  5,  6],
       [ 1,  2,  3,  4,  5,  6,  7],
       [ 2,  3,  4,  5,  6,  7,  8],
       [ 3,  4,  5,  6,  7,  8,  9],
       [ 4,  5,  6,  7,  8,  9, 10]])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有非标量输出的 Numpy 矢量化函数 的相关文章

  • 使用 MongoDB 作为我们的主数据库,我应该使用单独的图数据库来实现实体之间的关系吗?

    我们目前正在为一家专业公司内部实施类似 CRM 的解决方案 由于存储信息的性质以及信息的不同值和键 我们决定使用文档存储数据库 因为它完全适合目的 在本例中我们选择 MongoDB 作为此 CRM 解决方案的一部分 我们希望存储实体之间的关
  • 为什么 dataclasses.astuple 返回类属性的深层副本?

    在下面的代码中astuple函数正在执行数据类的类属性的深层复制 为什么它不能产生与函数相同的结果my tuple import copy import dataclasses dataclasses dataclass class Dem
  • pandas DataFrame.join 的运行时间是多少(大“O”顺序)?

    这个问题更具概念性 理论性 与非常大的数据集的运行时间有关 所以我很抱歉没有一个最小的例子来展示 我有一堆来自两个不同传感器的数据帧 我需要最终将它们连接成两个very来自两个不同传感器的大数据帧 df snsr1 and df snsr2
  • 多输出堆叠回归器

    一次性问题 我正在尝试构建一个多输入堆叠回归器 添加到 sklearn 0 22 据我了解 我必须结合StackingRegressor and MultiOutputRegressor 经过多次尝试 这似乎是正确的顺序 import nu
  • 从Django中具有外键关系的两个表中检索数据? [复制]

    这个问题在这里已经有答案了 This is my models py file from django db import models class Author models Model first name models CharFie
  • python multiprocessing 设置生成进程等待

    是否可以生成一些进程并将生成进程设置为等待生成的进程完成 下面是我用过的一个例子 import multiprocessing import time import sys def daemon p multiprocessing curr
  • 为什么 web2py 在启动时崩溃?

    我正在尝试让 web2py 在 Ubuntu 机器上运行 所有文档似乎都表明要在 nix 系统上运行它 您需要下载源代码并执行以下操作 蟒蛇 web2py py 我抓住了source http www web2py com examples
  • Pycharm 在 os.path 连接上出现“未解析的引用”

    将pycharm升级到2018 1 并将python升级到3 6 5后 pycharm报告 未解析的引用 join 最新版本的 pycharm 不会显示以下行的任何警告 from os path import join expanduser
  • 打印数字时添加千位分隔符[重复]

    这个问题在这里已经有答案了 我真的不知道这个问题的 名称 所以它可能是一个不正确的标题 但问题很简单 如果我有一个数字 例如 number 23543 second 68471243 我想要它使print 像这样 23 54368 471
  • Python 内置的 super() 是否违反了 DRY?

    显然这是有原因的 但我没有足够的经验来认识到这一点 这是Python中给出的例子docs http docs python org 2 library functions html super class C B def method se
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • 使用 python/numpy 重塑数组

    我想重塑以下数组 gt gt gt test array 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 为了得到 gt gt gt test2 array 11 12 21 22 13 14
  • 嵌套作用域和 Lambda

    def funct x 4 action lambda n x n return action x funct print x 2 prints 16 我不太明白为什么2会自动分配给n n是返回的匿名函数的参数funct 完全等价的定义fu
  • Python GTK+ 画布

    我目前正在通过 PyGobject 学习 GTK 需要画布之类的东西 我已经搜索了文档 发现两个小部件似乎可以完成这项工作 GtkDrawingArea 和 GtkLayout 我需要一些基本函数 如 fillrect 或 drawline
  • Protobuf 如何编码 oneof 消息结构

    对于这个 python 程序 在编码时运行 protobuf 编码会给出以下输出 0a 10 08 7f8a 0104 08 02 10 0392 0104 08 02 10 03 18 01 我不明白的是为什么8a后面有一个01 为什么9
  • python 中的“槽包装器”是什么?

    object dict 和其他地方的隐藏方法设置为这样的
  • Firebase Firestore:获取文档的生成 ID (Python)

    我可以创建一个新文档 带有自动生成的 ID 并存储对其的引用 如下所示 my data key value doc ref db collection u campaigns add my data 我可以像这样访问数据本身 print d
  • 等待子进程使用 os.system

    我用了很多os system在 for 循环内调用创建后台进程 如何等待所有后台进程结束 os wait告诉我没有子进程 ps 我使用的是Solaris 这是我的代码 usr bin python import subprocess imp
  • 在virtualenv中下载sqlite3

    我正在尝试使用命令创建应用程序python3 manage py startapp webapp但我收到一条错误消息 django core exceptions ImproperlyConfigured 加载时出错 pysqlite2 或
  • NLTK:查找单词大小为 2k 的上下文

    我有一个语料库 我有一个词 对于语料库中该单词的每次出现 我想获取一个包含该单词之前的 k 个单词和该单词之后的 k 个单词的列表 我在算法上做得很好 见下文 但我想知道 NLTK 是否提供了一些我错过的功能来满足我的需求 def size

随机推荐

  • SDL - 获取本机屏幕分辨率

    My code 窗口 cpp Window Window int w int h const char title const char icon height h width w if SDL Init SDL INIT EVERYTHI
  • 使用 OpenCV (Python) 改进轮廓检测

    我正在尝试从照片中识别卡片 我设法在理想的照片上做到了我想要的 但我现在很难在稍微不同的照明等情况下应用相同的程序 所以问题是如何使以下轮廓检测更加稳健 我需要分享我的大部分代码 以便拍摄者能够制作出感兴趣的图像 但是我的问题仅与最后一个块
  • SSIS 表达式生成器:将日期/时间转换为纪元时间戳

    我正在尝试构建一个表达式 将日期 时间参数转换为将在 Url 参数字符串中使用的纪元时间戳 我想我会尝试GetDate 首先 然后替换实际参数 Package endingDate 这个语法 DATEDIFF s 19700101 GETD
  • MediaWiki,尝试调查 VisualEditor“联系 Parsoid/RESTBase 服务器时出错 (HTTP 500)”

    很多人由于多种不同的原因而遇到相同的错误 因此 在尝试作曲家更新后 我尝试从浏览器开始调查它并逐步重建正在发生的事情 这对我来说真的很难 我非常感谢 PHP 开发人员的帮助 From Chrome Developer Tools I cou
  • 在 Android 应用程序中获取 Google 的搜索结果

    在我的 Android 应用程序中 我想从用户那里获取搜索查询 并使用该查询搜索 google 获取搜索结果并使用搜索结果填充列表 自定义搜索 API 每天的免费搜索次数限制为 100 次 那么有没有其他的搜索方法呢 这是你可以使用的东西
  • 使用普通 Javascript 隐藏所有带有类的元素

    我通常使用document getElementById id style display none 通过 Javascript 隐藏单个 div 是否有一种类似简单的方法来隐藏属于同一类的所有元素 我需要一个不使用 jQuery 的简单
  • 向同一台计算机上的多个客户端发送多播消息

    我正在尝试编写一个服务器 服务 它每秒左右在局域网上广播一条消息 有点像服务发现 该消息需要由以下人员接收 多个客户端程序可能是 在同一台机器上或不同的机器上 机器 但可能不止 每台机器上运行一个程序 同一时间 我正在使用 delphi 7
  • 使用Python提取嵌套括号中的句子

    我有多个 txt目录中的文件 这是一个示例one of my txt files kkkkk select xx xE PUT xx xxxx jdfjhf jhfjj from xxxx x xx L quit 1 xxxxx FROM
  • 有没有办法强制 mongodb 将某些索引存储在 ram 中?

    我有一个具有相对较大索引的集合 但小于可用内存 并查看该集合上 find 的性能以及 htop 给出的系统中的可用内存量 似乎 mongo 没有在内存中存储完整索引 有没有办法强制 mongo 将这个特定索引存储在内存中 查询示例 gt d
  • 如何在 SQL Server 中包含可选的空参数

    我想创建一个存储过程 它在过程的 WHERE 部分有一个可选参数 我的 C 代码可以为此过程传入 null 或有效的产品 ID 这里是 declare ProductID int set ProductID null select from
  • 等待可重入锁中的条件

    以下代码摘自Java文档的Condition http docs oracle com javase 1 5 0 docs api java util concurrent locks Condition html class Bounde
  • 我怎样才能用maven看到jboss控制台

    我用maven2启动了jboss 5 1 0 GA服务器 是否有可能我可以看到控制台中发生了什么 我正在使用 eclipse 插件来运行 Maven 是否可以在 eclipse 或其他地方看到控制台 这就是我所说的控制台的意思 是否可以在某
  • 如果响应为404,如何使用Service Worker缓存跨域资源?

    w3 6 2 跨源资源和 CORS 应用程序倾向于缓存来自 CDN 或其他来源的项目 可以直接使用请求其中许多
  • CGPDF iPhone/iPad 内存问题

    多年来 我一直在努力尝试为 iPhone iPad 制作一个可用的 PDF 阅读器 但它永远不会停止消耗内存 看来所有用CGContextDrawPDFPage绘制的页面都被内部缓存起来 永远不会释放 我不是唯一一个遇到这个问题的人 htt
  • 临时表列列表 (MySQL)

    我需要在 MySQL 中获取某些临时表 MyISAM 的列表列 例如number column name column 我需要知道具有特定名称的列数 事先 我不知道列数是多少 我正在使用动态 sql 和一些变量来创建临时表 我不能使用sho
  • 多重矩阵乘法

    在 numpy 中 我有一个 N 3x3 矩阵的数组 这是我如何存储它们的示例 我正在抽象内容 N 10 matrices np ones N 3 3 我还有一个 3 向量数组 这是一个例子 vectors np ones N 3 我似乎无
  • 失败:Microsoft.AspNetCore.SpaServices[0]

    Asp net core 2 1 Angular 6应用程序 在我的Start cs文件 我们有 app UseSpa spa gt To learn more about options for serving an Angular SP
  • 函数/函子作为模板参数。它们可以存储吗?

    想象我有以下自由函数和函子 void myFreeFunction void cout lt lt Executing free function lt lt endl struct MyFunctor void operator void
  • Java - 调用屏幕键盘

    我正在开发的应用程序将在Windows 7上运行 它将用于通过触摸屏输入一些信息 每当提示用户输入信息时 我需要弹出一个屏幕键盘 我的问题是 我应该从头开始创建一个键盘类还是应该使用 Windows 7 内置屏幕键盘以及如何在 Java 应
  • 具有非标量输出的 Numpy 矢量化函数

    我正在尝试对输出列表的函数进行矢量化 我希望将 numpy 列表中的所有值提供给它 并让它返回一个矩阵 这样每一行都是输入向量中元素的输出 import numpy as np def func x n o for i in range n