在多维数组的每个元素上使用map?

时间:2016-04-04 07:18:44

标签: python arrays numpy lambda

例如,我有300x600 numpy数组。我想使用map的lambda来修改这个数组中的每个值,并使用一些if条件。 (例如,如果一个单元格<100则它将变为0,否则什么都不做)

使用maplambda证明lambda中的每个变量都是一个大小为600的数组。你是否有任何优雅的函数,我能够迭代任何大小的数组的所有元素和修改它们?

2 个答案:

答案 0 :(得分:2)

使用boolean indexing

In [2]: arr = np.arange(25).reshape(5, 5)

In [3]: arr
Out[3]: 
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24]])

In [4]: arr[arr % 3 == 0] = 42

In [5]: arr
Out[5]: 
array([[42,  1,  2, 42,  4],
       [ 5, 42,  7,  8, 42],
       [10, 11, 42, 13, 14],
       [42, 16, 17, 42, 19],
       [20, 42, 22, 23, 42]])

答案 1 :(得分:0)

您可以使用

f=np.vectorize(<lambda>)
f(a)