将函数映射到numpy数组,变化一个参数
首先,让我给你看看代码:
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
的第二个参数的值。这样做太慢了(每次都创建一个新函数肯定没什么帮助),我觉得我没有用上 Python 更优雅的写法。有什么建议吗?
如果能得到一个二维数组的解决方案会不会不错呢?我不太确定,但也许是个好主意。
对可能的问题的回答:
- 是的,这个问题可以算作一个优化问题(
do_something_else()
隐藏了这一点) - 不,scipy.optimize 没有奏效,因为我处理的是布尔值,似乎总是无法收敛。
3 个回答
0
你能重写这个函数吗?如果可以的话,建议你让这个函数接受两个numpy数组,一个是a
,另一个是numpy.arange(n)
。你可能需要调整一下数组的形状,以便它们能够正确对齐,方便进行广播操作。
0
如果a
的大小很大,那么问题的关键不在于创建这个函数,而在于复制这个数组。
6
你试过 numpy.vectorize
吗?
...
vfunc_curry = vectorize(functools.partial(func, y=n))
result = vfunc_curry(a)
...