numpy在不同的行上执行相同的操作

时间:2016-01-06 08:24:05

标签: python numpy cython

假设我有一个如下列表:

points = np.array( [ . . . ] , [ . . .], [ . . .] )  # shape is (500000, 1000)

和另一个列表

target = np.array([ . . .])  #shape is (1000,)

现在我可以按如下方式计算L2规范:

norm = np.linalg.norm(points - target, axis=1)

这种方法很完美,但是当我想要为100K目标值执行此操作时它非常慢。目前,我从目标列表中获取目标值并计算每个目标的范数。

有快速的方法吗?

1 个答案:

答案 0 :(得分:3)

是的,广播。

ip adrr' and find ip address like

但是如果你有500k点和100k目标以及1000-D(你需要500,000 * 100000 * 1000 * 8 B = 400 TB RAM),你可能会耗尽所有记忆!)

您当前的减速可能是由于所有计算的实际成本而不是您在Python中循环的事实。考虑使用GPU计算(可能是Theano),以便在需要时加快速度。

相关问题