【发布时间】:2015-10-29 18:21:51
【问题描述】:
让A,B 成为((day,observation,dim)) 数组。每个数组在给定的一天包含相同数量的观测值,观测值是一个尺寸昏暗的点(即昏暗的浮点数)。对于每一天,我想计算当天A 和B 中所有观测值之间的空间距离。
例如:
import numpy as np
from scipy.spatial.distance import cdist
A, B = np.random.rand(50,1000,10), np.random.rand(50,1000,10)
output = []
for day in range(50):
output.append(cdist(A[day],B[day]))
我在哪里使用scipy.spatial.distance.cdist。
有没有更快的方法来做到这一点?理想情况下,我想为output 获取一个((day,observation,observation)) 数组,该数组包含每天在A 和B 中的观察之间的成对距离,同时以某种方式避免了几天的循环。
【问题讨论】:
-
您可以编写一段简短、可运行的代码,而不是用文字描述您的数据。如果您这样做是为了让人们可以复制、粘贴和运行您的问题中的代码,而不会出现未定义的变量和其他问题,那么 a) 您将使您想要的输出非常清晰 b) 您更有可能得到好的答案。 Here's a recent example
-
谢谢,我添加了用于复制和粘贴的代码
-
谢谢 - 我认为如果“天”的数量相对于观察的数量来说很小,那么与
cdist计算相比,Python 循环的开销将相对微不足道。 -
@YXD 是的,我应该澄清一下。我对所有三个维度都非常大的情况感兴趣。
标签: python performance numpy multidimensional-array scipy