np.vectorize() 和常规表示法有什么区别

Whats the difference between np.vectorize() and regular notation

我是 python 和 numpy 的新手。假设我有一个名为 addTwo 的函数,它只是 returns 给定值 + 2。我的问题是 np.vectorize(addTwo )(matrix) 和 addTwo (matrix) 之间有什么区别。两者都给我相同的输出。 基本上我的问题是:如果我有以下代码:

import numpy as np
def addTwo(a):
    return a + 2

matr = np.array([[1, 2], [2, 3], [3, 4]])

我想知道这两者的区别:

addTwo(matr)
np.vectorize(addTwo)(matr)

根据文档( https://docs.scipy.org/doc/numpy-1.9.1/reference/generated/numpy.vectorize.html): The vectorize function is provided primarily for convenience, not for performance. The implementation is essentially a for loop. 这意味着函数的 vectorize 中没有 reazon 可以像您的示例中那样直接应用。 实际上这可能会导致性能下降。 "vectorize" 的主要目标是在您的代码中隐藏 for 循环。但它不会避免它既不会改变预期结果。