numpy矩阵

时间:2018-02-17 21:48:55

标签: python python-3.x numpy

有没有办法轻松地将函数映射到numpy数组中的每个值?我以前把它分成列表,使用列表理解并重新构建矩阵,但似乎必须有一个更简单的方法。

1 个答案:

答案 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])
>>>

有关性能和用法的更多讨论可以在这里找到:

Most efficient way to map function over numpy array