Numpy 相关二维向量场

Numpy 相关二维向量场,numpy,scikit-learn,scipy,correlation,covariance,Numpy,Scikit Learn,Scipy,Correlation,Covariance,拥有多个2D流图,即向量场,如何找到这些流图对之间的统计相关性 问题: 不应(?)将形状(x,y,2)的2个流程图调整为1D向量并运行 np.相关性系数(流程1.重塑(1,-1),流程2.重塑(1,-1)) 因为x,y条目是连接的 打印产量,仅用于可视化目的: 流程1: 流程2: 我正在考虑比较大小和方向 理想情况下,如何比较这些(余弦距离…) 如何比较向量场之间的协方差 编辑: 我知道np.corrcoef(flow1.reforme(2,-1),flow2.reforme(2,-1))

拥有多个2D流图,即向量场,如何找到这些流图对之间的统计相关性

问题

不应(?)将形状(x,y,2)的2个流程图调整为1D向量并运行

np.相关性系数(流程1.重塑(1,-1),流程2.重塑(1,-1))

因为x,y条目是连接的

打印产量,仅用于可视化目的:

流程1: 流程2:

我正在考虑比较大小和方向

  • 理想情况下,如何比较这些(余弦距离…)

  • 如何比较向量场之间的协方差

编辑:

我知道
np.corrcoef(flow1.reforme(2,-1),flow2.reforme(2,-1))
将返回一个4,4相关系数矩阵,但发现它不便于解释。

对于某些相似性度量,可能确实需要考虑域的空间结构。但相关系数并不能做到这一点:它在域的任何置换下都是不变的。例如,(0,1,2,3,4)和(1,2,4,8,16)之间的相关性与(1,4,2,0,3)和(2,16,4,1,8)之间的相关性相同,其中两个数组以相同的方式重新排列

因此,相关系数可通过以下方式获得:

  • 将两个阵列居中,即减去其平均值。比如说,我们得到了FC1和FC2
  • 取内积FC1和FC2:这只是匹配条目的乘积之和
  • 除以内积FC1*FC1和FC2*FC2的平方根
  • 例如:

    flow1 = np.random.uniform(size=(10, 10, 2))     # the 3rd dimension is for the components
    flow2 = flow1 + np.random.uniform(size=(10, 10, 2))
    flow1_centered = flow1 - np.mean(flow1, axis=(0, 1))
    flow2_centered = flow2 - np.mean(flow2, axis=(0, 1))
    inner_product = np.sum(flow1_centered*flow2_centered)
    r = inner_product/np.sqrt(np.sum(flow1_centered**2) * np.sum(flow2_centered**2))
    
    这里的流有一些正相关性,因为我在流1中包含了流2。具体来说,它是一个大约
    1/sqrt(2)
    的数字,受随机噪声的影响


    如果这不是你想要的,那么你不需要相关系数,而是其他一些相似性度量

    非常感谢!对我来说,这看起来像是余弦相似性?这是否考虑了向量的大小,因为向量是标准化和居中的?什么是同时使用角度和幅值的好度量,或者如何度量幅值相似性(概率协方差?)场F和100*F具有完美的相关性(1)。如果不希望这样,则需要另一种措施。可能是向量F-G的平方范数之和。有无限多的公式可以写出。有趣的是,你有更多的信息吗(可能是维基?)向量F-G的平方范数之和,基本上是方差,但不是均值中心?