在python中使用map

时间:2014-02-13 06:59:41

标签: python numpy map functional-programming

我正在试图找出在python中正确使用map的方法,以便我可以通过Pool.map对我的程序进行多线程处理。基本上我遇到了试图理解python功能如何工作的问题。我有:

import numpy as np

def maptest(foo,bars):
   print foo * bars

main():
   matA = np.eye(2)
   matB = np.eye(2)

   print map((lambda foo: maptest(foo, matB)), matA) 

这给了我一个输出:

[[ 1.  0.]
 [ 0.  0.]]
[[ 0.  0.]
 [ 0.  1.]]
[None, None]

当我想要的输出只是:

[[1. 0.]
 [0. 1.]]

我可以通过地图电话发生什么事?这是我第一次使用map和lambda。我用lambdify和sympy,但这都是为了我的职业经历。谢谢!

1 个答案:

答案 0 :(得分:5)

[无,无]来自打印地图调用(请注意,您的maptest函数会打印!)。

现在,打印这些多个数组的原因是您要在整个mapA中映射函数。 mapA实际上是一个双元素数组,map将您的函数应用于数组的每个元素。因此,您打印[1,0] [[1,0] [0,1]],然后打印[0,1] [[1,0] [0,1]]。您没有乘以矩阵,而是进行了两次乘法运算,每次乘法都是mapA的每个元素。