Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将函数映射到numpy数组,改变参数_Python_Arrays_Map_Numpy_Currying - Fatal编程技术网

Python 将函数映射到numpy数组,改变参数

Python 将函数映射到numpy数组,改变参数,python,arrays,map,numpy,currying,Python,Arrays,Map,Numpy,Currying,首先,让我向您展示codez: a = array([...]) for n in range(10000): func_curry = functools.partial(func, y=n) result = array(map(func_curry, a)) do_something_else(result) ... 我在这里做的是尝试将func应用于数组,每次更改func的第二个参数的值。这是Slooow(每次迭代都创建一个新函数肯定没有帮助),我也觉得

首先,让我向您展示codez:

a = array([...])
for n in range(10000):
    func_curry = functools.partial(func, y=n)
    result = array(map(func_curry, a))
    do_something_else(result)
    ...
我在这里做的是尝试将
func
应用于数组,每次更改
func
的第二个参数的值。这是Slooow(每次迭代都创建一个新函数肯定没有帮助),我也觉得我错过了python的方法。有什么建议吗

能给我一个二维阵列的解决方案是个好主意吗?我不知道,但也许是

对可能问题的答复:

  • 是的,这是(使用广义定义)一个优化问题(
    do\u something\u else()
    隐藏了这一点)
  • 不,scipy.optimize不起作用,因为我处理的是布尔值,它似乎永远不会收敛

如果
a
的大小很大,那么瓶颈不应该是函数的创建,而是数组的复制。

您是否尝试过
numpy.vectorize

...
    vfunc_curry = vectorize(functools.partial(func, y=n))
    result = vfunc_curry(a)
...

你能重写这个函数吗?如果可能,您应该编写函数以获取两个numpy数组
a
numpy.arange(n)
。您可能需要重新调整阵列的形状,以使阵列排列起来进行广播。

func的功能是什么?如果我们对它的功能有更多的了解,那么我们可能会帮助您找到一种更快的方法。现在,我认为map必须将numpy数组更改为一个列表,映射它,然后列表被更改回一个数组,我觉得这个数组听起来不快。如果我们能找到一种使用numpy函数对列执行func的方法,它应该会更快。我猜你是对a中矩阵的每一列应用func,然后使用结果更接近正确的解。您是否分析过以确保此部分是问题所在,而不是“做某事”部分?
a
是长度为100的1D numpy数组,那么das
func
做什么呢?如果由于某种原因无法透露
func
的功能,则必须自己搜索瓶颈。探查器将对此提供帮助()。