我在3D中有两点:
(xa, ya, za)
(xb, yb, zb)
Run Code Online (Sandbox Code Playgroud)
我想计算距离:
dist = sqrt((xa-xb)^2 + (ya-yb)^2 + (za-zb)^2)
Run Code Online (Sandbox Code Playgroud)
使用NumPy或Python的最佳方法是什么?我有:
a = numpy.array((xa ,ya, za))
b = numpy.array((xb, yb, zb))
Run Code Online (Sandbox Code Playgroud) 我有两个x - y坐标数组,我想找到一个数组中每个点与另一个数组中所有点之间的最小欧几里德距离.阵列的大小不一定相同.例如:
xy1=numpy.array(
[[ 243, 3173],
[ 525, 2997]])
xy2=numpy.array(
[[ 682, 2644],
[ 277, 2651],
[ 396, 2640]])
Run Code Online (Sandbox Code Playgroud)
我目前的方法遍历每个坐标xy的xy1计算之间的协调距离和其他坐标.
mindist=numpy.zeros(len(xy1))
minid=numpy.zeros(len(xy1))
for i,xy in enumerate(xy1):
dists=numpy.sqrt(numpy.sum((xy-xy2)**2,axis=1))
mindist[i],minid[i]=dists.min(),dists.argmin()
Run Code Online (Sandbox Code Playgroud)
有没有办法消除for循环,并以某种方式在两个数组之间进行逐元素计算?我设想生成一个距离矩阵,我可以在其中找到每行或每列中的最小元素.
另一种看待问题的方法.假设我将xy1(长度为m)和xy2(长度为p)连接成xy(长度为n),并存储原始数组的长度.从理论上讲,我应该能够从那些我可以获取mxp子矩阵的坐标生成一个nxn距离矩阵.有没有办法有效地生成这个子矩阵?
我想使用字符串相似性函数来查找我的数据库中的损坏数据.
我遇到了其中几个:
我想知道它们之间的区别以及它们最适合的情况?
similarity euclidean-distance jaro-winkler levenshtein-distance
我有分类文本的语料库.从这些我创建矢量.每个向量对应一个文档.矢量分量是本文档中的字权重,计算为TFIDF值.接下来,我构建一个模型,其中每个类都由一个向量表示.模型具有与语料库中的类一样多的向量.模型矢量的分量被计算为取自该类中矢量的所有分量值的平均值.对于未分类的矢量,我通过计算这些矢量之间的余弦来确定与模型矢量的相似性.
问题:
1)我可以使用未分类和模型向量之间的欧几里德距离来计算它们的相似性吗?
2)为什么欧几里德距离不能用作相似度量而不是两个矢量之间的角度余弦,反之亦然?
谢谢!
我不确定"规范"和"欧几里德距离"是否意味着同样的事情.请你帮我解决这个问题.
我有一个nby m数组a,其中m> 3.我想计算第二个数据点a[1,:]与所有其他点(包括它自身)之间的Eculidean距离.所以我使用了np.linalg.norm,它输出了两个给定点的范数.但我不知道这是否是获得ED的正确方法.
import numpy as np
a = np.array([[0, 0, 0 ,0 ], [1, 1 , 1, 1],[2,2, 2, 3], [3,5, 1, 5]])
N = a.shape[0] # number of row
pos = a[1,:] # pick out the second data point.
dist = np.zeros((N,1), dtype=np.float64)
for i in range(N):
dist[i]= np.linalg.norm(a[i,:] - pos)
Run Code Online (Sandbox Code Playgroud) 我是Numpy的新手,我想问你如何计算矢量中存储的点之间的欧氏距离.
让我们假设我们有一个numpy.array,每一行都是一个向量和一个numpy.array.我想知道是否可以计算所有点和这个单点之间的欧氏距离并将它们存储在一个numpy.array中.
这是一个界面:
points #2d list of row-vectors
singlePoint #one row-vector
listOfDistances= procedure( points,singlePoint)
Run Code Online (Sandbox Code Playgroud)
我们可以有这样的东西吗?或者是否可以让一个命令将单个点作为其他点的列表,最后我们得到一个距离矩阵?
谢谢
我在二维空间中有一组点,需要计算从每个点到另一个点的距离.
我有一个相对较少的分数,也许最多100分.但是因为我需要经常快速地做这些以确定这些移动点之间的关系,并且因为我知道迭代这些点可能会一样糟糕因为O(n ^ 2)的复杂性,我正在寻找利用numpy的矩阵魔法(或scipy)的方法.
正如我的代码所示,每个对象的坐标都存储在其类中.但是,当我更新类坐标时,我也可以在numpy数组中更新它们.
class Cell(object):
"""Represents one object in the field."""
def __init__(self,id,x=0,y=0):
self.m_id = id
self.m_x = x
self.m_y = y
Run Code Online (Sandbox Code Playgroud)
在我看来,创建一个欧几里德距离矩阵来防止重复,但也许你有一个更聪明的数据结构.
我也很开心指向漂亮的算法.
此外,我注意到有类似的问题涉及欧几里德距离和numpy,但没有找到任何直接解决这个有效填充全距离矩阵的问题.
我有一个MxN数组,其中M是观察数量,N是每个向量的维数.从该阵列矢量的,我需要计算mean和minimum欧几里得距离向量之间.
在我看来,这需要我计算M C 2距离,这是一个O(n min(k,nk))算法.我M的约为10,000,我N的约为1,000,这个计算需要约45秒.
是否有更有效的方法来计算mean和min距离?也许是一种概率方法?我不需要它准确,只需要关闭.
两点之间的距离:
sqrt((x1-x2)^2 + (y1-y2)^2)
Run Code Online (Sandbox Code Playgroud)
有没有办法在Objective-C中更快地完成这个数学运算?
编辑:我想我需要澄清一下.我写了上面的公式只是为了澄清我用来计算距离的公式.^并不意味着代表xor - 我只想表示数学公式而不使用任何函数,如pow或任何东西,所以我的意思是使用^来"提升电源".我想知道是否有人知道是否使用按位运算符,或者在汇编中编写代码会给出优化版本.我在iPhone/iPad应用程序中使用该公式.
给出两组 - d维点.如何在Matlab中最有效地计算成对平方欧氏距离矩阵?
符号:
集合1由(numA,d)-matrix 给出A,集合2由(numB,d)-matrix 给出B.得到的距离矩阵应为格式(numA,numB).
示例点:
d = 4; % dimension
numA = 100; % number of set 1 points
numB = 200; % number of set 2 points
A = rand(numA,d); % set 1 given as matrix A
B = rand(numB,d); % set 2 given as matrix B
Run Code Online (Sandbox Code Playgroud) python ×6
numpy ×5
distance ×2
math ×2
matrix ×2
performance ×2
vector ×2
algorithm ×1
arrays ×1
jaro-winkler ×1
matlab ×1
objective-c ×1
optimization ×1
python-3.x ×1
scipy ×1
similarity ×1
trigonometry ×1