最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python計算兩點間距離的5種常用方法

 更新時間:2026年04月16日 08:15:49   作者:detayun  
計算兩點距離在 Python 中有多種方法,本文介紹了在Python中計算兩點距離的5種常用方法,每種方法都有各自的適用場景和優(yōu)缺點,感興趣的小伙伴可以了解下

計算兩點距離在 Python 中有多種方法,我為你介紹幾種最常用的方式:

方法一:使用歐幾里得距離公式(最基礎)

這是最直接的方法,使用數(shù)學公式:距離 = √[(x? - x?)² + (y? - y?)²]

import math

def distance_between_points(p1, p2):
    """計算兩點之間的歐幾里得距離"""
    x1, y1 = p1
    x2, y2 = p2
    
    # 計算距離
    distance = math.sqrt((x2 - x1)**2 + (y2 - y1)**2)
    return distance

# 示例
point1 = (1, 2)
point2 = (4, 6)

dist = distance_between_points(point1, point2)
print(f"兩點 {point1} 和 {point2} 之間的距離是: {dist}")
# 輸出: 5.0

方法二:使用math.dist()(Python 3.8+ 推薦)

Python 3.8 及以上版本提供了內(nèi)置函數(shù) math.dist(),這是最簡潔的方法:

import math

point1 = (1, 2)
point2 = (4, 6)

# 直接計算
distance = math.dist(point1, point2)
print(f"距離: {distance}")
# 輸出: 5.0

優(yōu)點

  • 代碼最簡潔
  • 支持任意維度的點(2D、3D等)
  • 性能優(yōu)化過

方法三:使用 NumPy(適合大量計算)

如果你需要處理大量數(shù)據(jù)或進行科學計算,NumPy 是最佳選擇:

import numpy as np

# 方法 3.1: 使用 np.linalg.norm
point1 = np.array([1, 2])
point2 = np.array([4, 6])

distance = np.linalg.norm(point2 - point1)
print(f"距離: {distance}")
# 輸出: 5.0

# 方法 3.2: 手動計算
distance = np.sqrt(np.sum((point2 - point1)**2))
print(f"距離: {distance}")
# 輸出: 5.0

# 方法 3.3: 批量計算多個點
points1 = np.array([[1, 2], [3, 4], [5, 6]])
points2 = np.array([[4, 6], [7, 8], [9, 10]])

distances = np.linalg.norm(points2 - points1, axis=1)
print(f"多個距離: {distances}")
# 輸出: [5. 5.65685425 5.65685425]

方法四:使用 SciPy(功能最強大)

SciPy 提供了更多距離計算選項(曼哈頓距離、切比雪夫距離等):

from scipy.spatial import distance

point1 = (1, 2)
point2 = (4, 6)

# 歐幾里得距離
euclidean_dist = distance.euclidean(point1, point2)
print(f"歐幾里得距離: {euclidean_dist}")

# 曼哈頓距離 (|x2-x1| + |y2-y1|)
manhattan_dist = distance.cityblock(point1, point2)
print(f"曼哈頓距離: {manhattan_dist}")

# 切比雪夫距離 (max(|x2-x1|, |y2-y1|))
chebyshev_dist = distance.chebyshev(point1, point2)
print(f"切比雪夫距離: {chebyshev_dist}")

方法五:不開方的距離(用于比較)

如果你只是需要比較距離大小,不需要實際距離值,可以省略開方操作以提高性能:

def distance_squared(p1, p2):
    """計算距離的平方(不開方)"""
    x1, y1 = p1
    x2, y2 = p2
    return (x2 - x1)**2 + (y2 - y1)**2

point1 = (1, 2)
point2 = (4, 6)
point3 = (5, 5)

dist2_1 = distance_squared(point1, point2)  # 25
dist2_2 = distance_squared(point1, point3)  # 25

# 比較時不需要開方
if dist2_1 < dist2_2:
    print("point2 更近")
elif dist2_1 > dist2_2:
    print("point3 更近")
else:
    print("距離相等")

完整示例:包含 3D 點

import math

def calculate_distance(p1, p2):
    """支持任意維度的點"""
    if len(p1) != len(p2):
        raise ValueError("兩點維度必須相同")
    
    # 計算各維度差值的平方和
    sum_of_squares = sum((a - b)**2 for a, b in zip(p1, p2))
    
    # 開方
    return math.sqrt(sum_of_squares)

# 2D 點
p1_2d = (1, 2)
p2_2d = (4, 6)
print(f"2D 距離: {calculate_distance(p1_2d, p2_2d)}")

# 3D 點
p1_3d = (1, 2, 3)
p2_3d = (4, 6, 8)
print(f"3D 距離: {calculate_distance(p1_3d, p2_3d)}")

# 使用 math.dist (Python 3.8+)
print(f"3D 距離 (math.dist): {math.dist(p1_3d, p2_3d)}")

性能對比建議

場景推薦方法
簡單的 2D/3D 距離計算math.dist() (Python 3.8+)
需要兼容舊版本 Python手動公式 + math.sqrt()
批量計算大量點NumPy 的 np.linalg.norm()
需要多種距離度量SciPy 的 scipy.spatial.distance
只需比較距離大小距離平方(不開方)

最推薦:如果你使用 Python 3.8+,直接用 math.dist(),代碼最簡潔且性能好!

到此這篇關于python計算兩點間距離的5種常用方法的文章就介紹到這了,更多相關python計算兩點間距離內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • pandas如何實現(xiàn)兩個dataframe相減

    pandas如何實現(xiàn)兩個dataframe相減

    這篇文章主要介紹了pandas如何實現(xiàn)兩個dataframe相減方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 深入剖析Python的列表和元組

    深入剖析Python的列表和元組

    這篇文章主要介紹了深入剖析Python的列表和元組,Python有4個內(nèi)建的數(shù)據(jù)結(jié)構(gòu),它們可以統(tǒng)稱為容器,因為它們實際上是一些“東西”組合而成的結(jié)構(gòu),而這些“東西”,可以是數(shù)字、字符甚至列表,或是它們的組合,需要的朋友可以參考下
    2023-07-07
  • Python argparse模塊應用實例解析

    Python argparse模塊應用實例解析

    這篇文章主要介紹了Python argparse模塊應用實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • Django Form 實時從數(shù)據(jù)庫中獲取數(shù)據(jù)的操作方法

    Django Form 實時從數(shù)據(jù)庫中獲取數(shù)據(jù)的操作方法

    這篇文章主要介紹了Django Form 實時從數(shù)據(jù)庫中獲取數(shù)據(jù)的相關知識,本文給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-07-07
  • 打包python 加icon 去掉cmd黑窗口方法

    打包python 加icon 去掉cmd黑窗口方法

    今天小編就為大家分享一篇打包python 加icon 去掉cmd黑窗口方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • pytorch/transformers?最后一層不加激活函數(shù)的原因分析

    pytorch/transformers?最后一層不加激活函數(shù)的原因分析

    這里給大家解釋一下為什么bert模型最后都不加激活函數(shù),是因為損失函數(shù)選擇的原因,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-01-01
  • python實現(xiàn)添加圖片到word文檔中

    python實現(xiàn)添加圖片到word文檔中

    這篇文章主要介紹了python實現(xiàn)添加圖片到word文檔中方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 使用Python給PDF添加目錄書簽的實現(xiàn)方法

    使用Python給PDF添加目錄書簽的實現(xiàn)方法

    有時下載到掃描版的 PDF 是不帶書簽目錄的,這樣閱讀起來很不方便,下面通過 python 實現(xiàn)一個半自動化添加書簽目錄的腳本,文中通過代碼介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2023-10-10
  • python之dlib包安裝失敗問題及解決

    python之dlib包安裝失敗問題及解決

    這篇文章主要介紹了python之dlib包安裝失敗問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Vue中自定義指令的三個常用方法小結(jié)

    Vue中自定義指令的三個常用方法小結(jié)

    這篇文章主要為大家詳細介紹了Vue中自定義指令的三個常用方法,文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以了解一下
    2024-02-02

最新評論

徐水县| 霍邱县| 广德县| 淮北市| 盐源县| 开阳县| 海盐县| 和硕县| 台州市| 平南县| 林口县| 离岛区| 张家港市| 平果县| 改则县| 潞西市| 永昌县| 修武县| 亳州市| 武强县| 瓮安县| 蕲春县| 静安区| 邹城市| 东源县| 嘉义市| 宜州市| 杂多县| 江山市| 柳江县| 嘉义县| 永泰县| 西安市| 南汇区| 汝州市| 武夷山市| 运城市| 鲜城| 和硕县| 江山市| 锦州市|