Numpy 如何在Python中为向量添加大小或值?
我用这个函数来计算两个向量a,b之间的距离,大小为300,word2vec,我得到“热”和“冷”之间的距离等于1 如何将这个值(1)加到一个向量上,因为我只想到new_vec=model['hot']+1,但是当我计算距离时(new_vec,model['hot'])=17Numpy 如何在Python中为向量添加大小或值?,numpy,linear-algebra,word2vec,Numpy,Linear Algebra,Word2vec,我用这个函数来计算两个向量a,b之间的距离,大小为300,word2vec,我得到“热”和“冷”之间的距离等于1 如何将这个值(1)加到一个向量上,因为我只想到new_vec=model['hot']+1,但是当我计算距离时(new_vec,model['hot'])=17 我希望dist(a,c)会给我1 你应该回顾一下是什么。在numpy的情况下,默认使用L-2范数(也称为欧几里德范数)。将1添加到向量时,调用是将1添加到向量中的所有元素 >> vec1 = np.random.
我希望dist(a,c)会给我1 你应该回顾一下是什么。在numpy的情况下,默认使用L-2范数(也称为欧几里德范数)。将1添加到向量时,调用是将1添加到向量中的所有元素
>> vec1 = np.random.normal(0,1,size=300)
>> print(vec1[:5])
... [ 1.18469795 0.04074346 -1.77579852 0.23806222 0.81620881]
>> vec2 = vec1 + 1
>> print(vec2[:5])
... [ 2.18469795 1.04074346 -0.77579852 1.23806222 1.81620881]
现在,您对norm
的调用是说sqrt((a1-b1)**2+(a2-b2)**2+…+(aN bN)**2)
其中N
是向量的长度,a
是第一个向量,b
是第二个向量(ai是a中的第i个元素)。自<代码>(a1-b1)**2==(a2-b2)**2==…=(aN bN)**2==1我们希望这个总数产生N,在你的情况下是300。因此,sqrt(300)=17.3
是预期的答案
>> print(np.linalg.norm(vec1-vec2))
... 17.320508075688775
要回答“如何向向量添加值”的问题,您已经正确地完成了此操作。如果要向特定元素添加值,则可以执行vec2[ix]+=value
whereix
为要添加的元素编制索引。如果要在向量中的所有元素上均匀地添加一个值,该值将使范数改变1,则添加np.sqrt(1/300)
另一个可能相关的是word2vec向量更常用的距离度量:它测量两个向量之间的角度。您应该查看它是什么。在numpy的情况下,默认使用L-2范数(也称为欧几里德范数)。将1添加到向量时,调用是将1添加到向量中的所有元素
>> vec1 = np.random.normal(0,1,size=300)
>> print(vec1[:5])
... [ 1.18469795 0.04074346 -1.77579852 0.23806222 0.81620881]
>> vec2 = vec1 + 1
>> print(vec2[:5])
... [ 2.18469795 1.04074346 -0.77579852 1.23806222 1.81620881]
现在,您对norm
的调用是说sqrt((a1-b1)**2+(a2-b2)**2+…+(aN bN)**2)
其中N
是向量的长度,a
是第一个向量,b
是第二个向量(ai是a中的第i个元素)。自<代码>(a1-b1)**2==(a2-b2)**2==…=(aN bN)**2==1我们希望这个总数产生N,在你的情况下是300。因此,sqrt(300)=17.3
是预期的答案
>> print(np.linalg.norm(vec1-vec2))
... 17.320508075688775
要回答“如何向向量添加值”的问题,您已经正确地完成了此操作。如果要向特定元素添加值,则可以执行vec2[ix]+=value
whereix
为要添加的元素编制索引。如果要在向量中的所有元素上均匀地添加一个值,该值将使范数改变1,则添加np.sqrt(1/300)
另一个可能相关的是word2vec向量更常用的距离度量:它测量两个向量之间的角度。如果我可以进一步询问,感谢您的详细解释,因为您提到了余弦sim,所以如果cos sim('cold','hot')=0.7,我如何将这个大小添加到向量中?正如在new_vec=model['hot']+(0.7)中一样,在这个领域,“将这个量级添加到一个向量”是不常见的,因此它可能有助于了解您为什么要这样做。(如果你想让向量“指向同一个方向,但更强烈”,更典型的做法是将向量乘以某个因子。但由于词向量到词向量的比较通常是通过余弦相似性来完成的,顾名思义,余弦相似性不受向量大小的影响,这同样是一种非典型操作。)谢谢你的详细解释,如果我可以进一步问的话,因为你提到了cosine_-sim,那么如果cos_-sim('cold','hot')=0.7,我如何将这个量级加到向量上?正如在new_vec=model['hot']+(0.7)中一样,在这个领域,“将这个量级添加到一个向量”是不常见的,因此它可能有助于了解您为什么要这样做。(如果你想让向量“指向同一个方向,但更强烈”,更典型的做法是将向量乘以某个因子。但由于词向量到词向量的比较通常是通过余弦相似性来完成的,顾名思义,余弦相似性不受向量大小的影响,这同样是一种非典型操作。)