我正在试图找出在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,但这都是为了我的职业经历。谢谢!
答案 0 :(得分:5)
[无,无]来自打印地图调用(请注意,您的maptest函数会打印!)。
现在,打印这些多个数组的原因是您要在整个mapA中映射函数。 mapA实际上是一个双元素数组,map将您的函数应用于数组的每个元素。因此,您打印[1,0] [[1,0] [0,1]],然后打印[0,1] [[1,0] [0,1]]。您没有乘以矩阵,而是进行了两次乘法运算,每次乘法都是mapA的每个元素。