如何解决创建向量矩阵之间所有可能平方差的numpy数组
我有一个形状为(1,100,2406)的numpy数组X。这是2406个向量,其中每个向量均为100维。
我想创建一个形状为(2406,2406)的矩阵,其中每个均方差都可以。
例如,如果我们想象一个较小的情况,它只有3个向量$ v_1,v_2,v_3 \ in \ mathbb {R} ^ {100} $,那么我的原始数组(单身维被抑制)看起来像
$ begin {pmatrix} v_1&v_2&v_3 \ end {pmatrix}
我想构造以下内容(在这种情况下,它将是3x3矩阵):
$ \ begin {pmatrix} || v_1-v_1 || ^ 2&|| v_1-v_2 || ^ 2&|| v_1-v_3 || ^ 2 \ || v_2-v_1 || ^ 2&| | v_2-v_2 || ^ 2&|| v_2-v_3 || ^ 2 \ || v_3-v_1 || ^ 2&|| v_3-v_2 || ^ 2&|| v_3-v_3 || ^ 2 \ end {pmatrix} $
我对形状感到困惑。
我认为我需要重塑原始数组,然后进行减法运算以得出正确的形状,但是我对如何重塑形状没有任何直觉?
解决方法
import numpy as np
def pairwise_dist(Y):
'''
Accept Y with shape (n_vectors,vector_dim)
'''
return np.linalg.norm(Y[None,:,:] - Y[:,None,:],axis=-1)
pairwise_dist(X[0].T)
在播放Y[None,:]
和Y[:,:]
时,Numpy会为您重塑。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。