當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy distance.squareform用法及代碼示例


本文簡要介紹 python 語言中 scipy.spatial.distance.squareform 的用法。

用法:

scipy.spatial.distance.squareform(X, force='no', checks=True)#

將 vector-form 距離向量轉換為 square-form 距離矩陣,反之亦然。

參數

X array_like

壓縮或冗餘距離矩陣。

force str,可選

與 MATLAB(TM) 一樣,如果 force 等於 'tovector''tomatrix' ,則輸入將分別被視為距離矩陣或距離向量。

checks 布爾型,可選

如果設置為 False,則不會檢查矩陣對稱性或零對角線。如果已知 X - X.T1 很小且 diag(X) 接近於零,則這非常有用。這些值無論如何都會被忽略,因此它們不會破壞正方形轉換。

返回

Y ndarray

如果傳遞的是壓縮距離矩陣,則返回冗餘距離矩陣,如果傳遞冗餘距離矩陣,則返回壓縮距離矩陣。

注意

  1. v = squareform(X)

    給定一個方陣n-by-n對稱距離矩陣X,v = squareform(X)返回一個n * (n-1) / 2(即二項式係數n選擇2)大小的向量v其中\(v[{n \choose 2} - {n-i \choose 2} + (j-i-1)]\) 是不同點之間的距離ij.如果X如果是非方形或不對稱的,則會產生錯誤。

  2. X = squareform(v)

    給定 n * (n-1) / 2 大小的向量 v 對於某些整數 n >= 1 編碼距離,如所述,X = squareform(v) 返回 n-by-n 距離矩陣 XX[i, j]X[j, i] 值設置為 ,並且所有對角線元素均為零。

在SciPy 0.19.0 中,squareform 停止將所有輸入類型轉換為 float64,並開始返回與輸入具有相同數據類型的數組。

例子

>>> import numpy as np
>>> from scipy.spatial.distance import pdist, squareform

x 是三維空間中五個點的數組。

>>> x = np.array([[2, 0, 2], [2, 2, 3], [-2, 4, 5], [0, 1, 9], [2, 2, 4]])

pdist(x) 計算 x 中每對點之間的歐幾裏得距離。距離以長度為 5*(5 - 1)/2 = 10 的一維數組返回。

>>> distvec = pdist(x)
>>> distvec
array([2.23606798, 6.40312424, 7.34846923, 2.82842712, 4.89897949,
       6.40312424, 1.        , 5.38516481, 4.58257569, 5.47722558])

squareform(distvec) 返回 5x5 距離矩陣。

>>> m = squareform(distvec)
>>> m
array([[0.        , 2.23606798, 6.40312424, 7.34846923, 2.82842712],
       [2.23606798, 0.        , 4.89897949, 6.40312424, 1.        ],
       [6.40312424, 4.89897949, 0.        , 5.38516481, 4.58257569],
       [7.34846923, 6.40312424, 5.38516481, 0.        , 5.47722558],
       [2.82842712, 1.        , 4.58257569, 5.47722558, 0.        ]])

當給定平方距離矩陣 m 時,squareform(m) 返回與該矩陣關聯的一維壓縮距離向量。在這種情況下,我們恢複distvec

>>> squareform(m)
array([2.23606798, 6.40312424, 7.34846923, 2.82842712, 4.89897949,
       6.40312424, 1.        , 5.38516481, 4.58257569, 5.47722558])

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.spatial.distance.squareform。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。