我正在尝试找出在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,但这仅是我的功能经验。谢谢!
[无,无]来自打印地图调用(请注意,将打印maptest函数!)。
现在,它打印这些多个数组的原因是您正在跨所有mapA映射函数。mapA实际上是一个由两个元素组成的数组,map将您的函数应用于该数组的每个元素。因此,您先打印[1,0] [[1,0] [0,1]],然后再打印[0,1] [[1,0] [0,1]]。您没有进行矩阵乘法,而是进行了两次乘法,对mapA的每个元素进行一次乘法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句