有没有办法轻松地将函数映射到numpy数组中的每个值?我以前把它分成列表,使用列表理解并重新构建矩阵,但似乎必须有一个更简单的方法。
答案 0 :(得分:2)
是的,您可以使用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]])
在某些情况下,您不需要np.vectorize()
,并且您只需使用np.array()
作为参数调用该函数,如下所示:
>>> def add_one(x):
... return x + 1
...
>>> add_one(np.array([1,2,3,4]))
array([2, 3, 4, 5])
>>>
有关性能和用法的更多讨论可以在这里找到: