两个大的2d列表之间的python快速均方误差

时间:2018-07-20 06:04:59

标签: python performance mean-square-error

我想计算两个非常大的2d数组之间的mse。

x1 = [1,2,3]
x2 = [1,3,5]
x3 = [1,5,9]
x = [x1,x2,x3]
y1 = [2,3,4]
y2 = [3,4,5]
y3 = [4,5,6]
y = [y1,y2,y3]

预期结果是大小为3的向量:

[mse(x1,y1), mse(x2,y2), mse(x3,y3)]

就目前而言,我正在使用sklearn.metrics.mean_squared_error这样的

mses = list(map(mean_squared_error, x, y))

这花费了非常长的时间,因为xi和yi的实际长度为115,而我的x / y向量超过一百万。

1 个答案:

答案 0 :(得分:2)

您可以使用numpy。

a = np.array(x) # your x
b = np.array(y) # your y
mses = ((a-b)**2).mean(axis=1)

如果您想使用xy

a = np.random.normal(size=(1000000,100))
b = np.random.normal(size=(1000000,100))
mses = ((a-b)**2).mean(axis=1)

使用您指定的矩阵大小(1 000 x 100),这在我的计算机上花费的时间不到一秒钟。