假设我有一个如下列表:
points = np.array( [ . . . ] , [ . . .], [ . . .] ) # shape is (500000, 1000)
和另一个列表
target = np.array([ . . .]) #shape is (1000,)
现在我可以按如下方式计算L2规范:
norm = np.linalg.norm(points - target, axis=1)
这种方法很完美,但是当我想要为100K目标值执行此操作时它非常慢。目前,我从目标列表中获取目标值并计算每个目标的范数。
有快速的方法吗?
答案 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),以便在需要时加快速度。