【问题标题】:Numpy vectorize excluded argumentNumpy矢量化排除参数
【发布时间】:2022-04-28 15:44:03
【问题描述】:

我需要有人以简单的方式解释 Numpy 矢量化函数中排除参数的功能。

【问题讨论】:

  • 欢迎来到 Stack Overflow!请使用tour 并通读help center,尤其是how to ask。你最好的选择是做你的研究,搜索关于 SO 的相关主题,然后试一试。在进行更多研究和搜索后,发布您的尝试Minimal, Complete, and Verifiable example,并具体说明您遇到的问题,这可以帮助您获得更好的答案。
  • 听起来你是numpy 初学者。我认为您不应该花太多时间学习np.vectorize。我已经回答了几个涉及此 excluded 参数的问题,但如果没有清楚地了解您知道多少或您需要什么,可能不值得我们花时间解释它。
  • 我了解一些函数。我只是不明白“传递给排除关键字的值不会被矢量化”是什么意思。请稍微解释一下。也感谢之前的回复

标签: numpy vectorization


【解决方案1】:

有时您不希望迭代所有对象。两个例子:

在您的函数中,f(a,b) 用于单个元素,例如 np.mod(a,b)。这里矢量化没问题:

import numpy as np

vc = np.vectorize(np.mod)
print(vc([5,11,7,4],2)) # first element will be iterated
print(vc([5,11,7,4],[2,3,4,5])) # both elements will be iterated
print(vc(5,[2,3,4,5])) # only second element will be iterated

另一方面,您有一个函数g(x,p),它需要p 的数组(例如:查找表或多项式的参数)。因此p 必须保留一个数组,否则该函数会给出错误或错误数据。这是通过排除p 来完成的。请注意,通过使用 exclude,您的所有参数现在都必须命名。示例:

import numpy as np

def g(x,p):
  return p[0]+x*p[1]+x*x*p[2]

print(g(5,[0,0,1]))

vg = np.vectorize(g, excluded=['p'])
print(vg(x=[0,1,2,3,4,5],p=[0,0,1])) # p will not be iterated

【讨论】:

    猜你喜欢
    • 2020-04-06
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 2018-03-17
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    相关资源
    最近更新 更多