作为我项目的一部分,我试图通过使用带有矩阵处理的map函数和将每个维度的min和max值封装为输入变量的向量,在大量矩阵上实现并行化归一化操作。代码如下:
import numpy as np
from functools import partial
def cf(A,MinValues,MaxValues):
print("Result is ##################",A=(A-MinValues)/(MaxValues-MinValues))
A=(A-MinValues)/(MaxValues-MinValues)
return A
if __name__=='__main__':
AMatrix=np.matrix([[1,5,9],[4,8,3],[7,2,6]])
MinMatrix=np.matrix([1,2,3])
MaxMatrix=np.matrix([7,8,9])
........
sc.parallelize(AMatrix).map(partial(cf,MinValues=MinMatrix,MaxValues=MaxMatrix)).collect()
运行上面的代码后,它会在处理过程中通过打印操作在终端上显示正确的答案,但是最后总会显示[[无],[无],[无]],这意味着(我猜)在map()操作之后,spark只能收集包含[None]元素的列表。
这里的大师可能会告诉我这里发生了什么事吗?实现该功能的正确方法是什么?
提前很好
答案 0 :(得分:0)
我运行此代码(python 2.7):
import numpy as np
from functools import partial
def cf(A,MinValues,MaxValues):
#print "Result is " + str((A-MinValues)/(MaxValues-MinValues))
A=(A-MinValues)/(MaxValues-MinValues)
return A
AMatrix=np.matrix([[1,5,9],[4,8,3],[7,2,6]])
MinMatrix=np.matrix([1,2,3])
MaxMatrix=np.matrix([7,8,9])
print sc.parallelize(AMatrix).map(partial(cf,MinValues=MinMatrix,MaxValues=MaxMatrix)).collect()
这就是结果:
[matrix([[0, 0, 1]]), matrix([[0, 1, 0]]), matrix([[1, 0, 0]])]
我无法看到问题..