Owe*_*683 3 python numpy python-3.x
有没有办法轻松地将函数映射到 numpy 数组中的每个值?我之前通过将其拆分为列表,使用列表理解并重新制作矩阵来完成它,但似乎必须有一种更简单的方法。
是的,你可以使用 np.vectorize()
>>> import numpy as np
>>> def myfunc(a, b):
... if a > b:
... return a - b
... else:
... return a + b
...
>>> vfunc = np.vectorize(myfunc)
>>> vfunc(np.array([[1,2,3],[1,2,3]]),2)
array([[3, 4, 1],
[3, 4, 1]])
Run Code Online (Sandbox Code Playgroud)
在某些情况下,您不需要np.vectorize(),您只需使用 annp.array()作为参数即可调用该函数,如下所示:
>>> def add_one(x):
... return x + 1
...
>>> add_one(np.array([1,2,3,4]))
array([2, 3, 4, 5])
>>>
Run Code Online (Sandbox Code Playgroud)
更多关于性能和使用的讨论可以在这里找到: