python中的映射求和 目标

python中的映射求和 目标,python,arrays,numpy,Python,Arrays,Numpy,我想使用map函数计算求和 通过使用以下样本数据: X = [[2,3,4,5,6],[1,4,5,3,5]] Y = [8.5,9.6] 这是我目前得到的: import numpy as np X = np.array([[2,3,4,5,6],[1,4,5,3,5]]) Y = np.array([8.5,9.6]) summation = X[0].dot(Y[0]) + X[1].dot(Y[1]) 或 编辑:性能比较 最快的解决方案是使用map函数求和,其次是np.sum,最慢

我想使用
map
函数计算求和

通过使用以下样本数据:

X = [[2,3,4,5,6],[1,4,5,3,5]]
Y = [8.5,9.6]
这是我目前得到的:

import numpy as np

X = np.array([[2,3,4,5,6],[1,4,5,3,5]])
Y = np.array([8.5,9.6])
summation = X[0].dot(Y[0]) + X[1].dot(Y[1])

编辑:性能比较
最快的解决方案是使用map函数求和,其次是
np.sum
,最慢的是
map
函数。

一次
调用就足够了

X.T.dot(Y)
array([ 26.6,  63.9,  82. ,  71.3,  99. ])

这将提供与所描述的其他两种方法相同的结果。我敢打赌,这比你能想出的任何
map
解决方案都要快(即使在这里使用它毫无意义)。

一个
呼叫就足够了

X.T.dot(Y)
array([ 26.6,  63.9,  82. ,  71.3,  99. ])

这将提供与所描述的其他两种方法相同的结果。我敢打赌,这比你能想到的任何
map
解决方案都要快(即使在这里使用没有意义)。

不确定这是否是一种优雅的方式,但它使用了map功能

sum(map(lambda x: x*Y[np.where(X==x)[0][0]], X))
array([ 26.6,  63.9,  82. ,  71.3,  99. ])

不确定这是否是一种优雅的方式,但它使用了map函数

sum(map(lambda x: x*Y[np.where(X==x)[0][0]], X))
array([ 26.6,  63.9,  82. ,  71.3,  99. ])

你也可以试试这个,尽管这不是最“干净”的方法:

X = np.array([[2,3,4,5,6],[1,4,5,3,5]])
Y = np.array([8.5,9.6])

def summation(X, Y):
    return sum(map(lambda x, y: x*y, X, Y))

print(summation(X,Y))
结果是:

[ 26.6  63.9  82.   71.3  99. ]

你也可以试试这个,尽管这不是最“干净”的方法:

X = np.array([[2,3,4,5,6],[1,4,5,3,5]])
Y = np.array([8.5,9.6])

def summation(X, Y):
    return sum(map(lambda x, y: x*y, X, Y))

print(summation(X,Y))
结果是:

[ 26.6  63.9  82.   71.3  99. ]


您的方程式和样本数据不匹配。方程显示了两个秩1张量(aka向量),看起来像一个简单的点积,而在数据
X
中是秩2张量(aka矩阵)。另外,为什么您要在同时使用
numpy
的同时使用
map
?@Ignacio Vergara Kausel。我重新建立了这个公式,我想知道一个新的方法来使用地图。用于学术用途和性能比较。公平地说,我认为你应该在更大的数据集上进行基准测试。认真地说,在1000x1000列表上尝试一下,你会看到差异。你的等式和样本数据不匹配。方程显示了两个秩1张量(aka向量),看起来像一个简单的点积,而在数据
X
中是秩2张量(aka矩阵)。另外,为什么您要在同时使用
numpy
的同时使用
map
?@Ignacio Vergara Kausel。我重新建立了这个公式,我想知道一个新的方法来使用地图。用于学术用途和性能比较。公平地说,我认为你应该在更大的数据集上进行基准测试。说真的,在1000x1000个列表上尝试一下,你会看到不同之处。这是另一种方式,谢谢,但是使用map函数,如何设计函数?@PeCaDe Python map?你真的不能,我也不建议你这么做。好的,这是尝试最快的方法,在一些并行应用它processing@PeCaDe好消息
X.T.dot(Y)
可能是你见过的最快的方法,除此之外没有其他方法。我保证,否则就把你的钱退回来。那是另一种方式,谢谢你,但是有了map函数,你怎么能设计这个函数呢?@pecadepythonmap?你真的不能,我也不建议你这么做。好的,这是尝试最快的方法,在一些并行应用它processing@PeCaDe好消息
X.T.dot(Y)
可能是你见过的最快的方法,除此之外没有其他方法。我保证,否则就把你的钱还给你。你做到了,我会编辑来比较性能@COLDSPEED也做得很好。太棒了!有趣的结果:)如果你做到了,我将编辑以比较性能@COLDSPEED也做得很好。太棒了!有趣的结果:)这一切都是最好的