遍历numpy数组/矩阵并将其存储在单独的数组中



我有一个矩阵/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
如果所需的操作不是通用的,向量化可能是必要的,但会以消耗执行时间为代价。向量化函数仍然会导致循环操作,而通用函数(如上所述)作为标量执行。

最新更新