我有一个矩阵/numpy数组a,需要对所有元素执行函数f,然后将结果存储在矩阵B中。我该怎么做呢?我在考虑追加一个空数组B,但这是最好的方法吗?
您可以使用numpy.vectorize
:
A = np.arange(9).reshape((3,3))
#array([[0, 1, 2],
# [3, 4, 5],
# [6, 7, 8]])
my_func = lambda x: x + 1 #Example function
vect_func = np.vectorize(my_func)
B = vect_func(A)
输出print(B)
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
大多数操作可以直接在数组本身上完成。例如,如果要为数组的每个元素添加1,只需调用;
arr2 = arr1+1
如果所需的操作不是通用的,向量化可能是必要的,但会以消耗执行时间为代价。向量化函数仍然会导致循环操作,而通用函数(如上所述)作为标量执行。