numpy 求向量夾角 區間 pi, pi

2021-10-18 16:39:12 字數 1255 閱讀 5176

求取 numpy 向量夾角可以使用 numpy.arctan2 函式;

從而避免了特殊值帶來的角度錯誤;

例項:

# 初始化向量

a = np.array([-

1.0,

1.0]

)b = np.array(

[0.0

,1.0])

# 單位化(可以不用這一步)

a /= norm(a)

b /= norm(b)

# 夾角cos值

cos_ = np.dot(a,b)

/(norm(a)

*norm(b)

)# 夾角sin值

sin_ = np.cross(a,b)

/(norm(a)

*norm(b)

)arctan2_ = np.arctan2(sin_, cos_)

print

("向量{}相對於向量{}的夾角是,即 pi"

.format

(a,b,arctan2_,arctan2_/np.pi)

)

舉例結果:

向量[1.

1.]相對於向量[0.

1.]的夾角是0.785,即0.250 pi

向量[1.0

.]相對於向量[0.

1.]的夾角是1.571,即0.500 pi

向量[-1.

1.]相對於向量[0.

1.]的夾角是-

0.785,即-

0.250 pi

成功將向量的夾角轉為 [-pi, +pi] 這個區間

原始碼:

a = np.array([-

1.0,

1.0]

)a /= norm(a)

b = np.array(

[0.0

,1.0])

b /= norm(b)

cos_ = np.dot(a,b)

/(norm(a)

*norm(b)

)sin_ = np.cross(a,b)

/(norm(a)

*norm(b)

)arctan2_ = np.arctan2(sin_, cos_)

print

("向量{}相對於向量{}的夾角是,即 pi"

.format

(a,b,arctan2_,arctan2_/np.pi)

)

python求兩個向量的夾角

import numpy as np x np.array 3,5 y np.array 4,2 兩個向量 lx np.sqrt x.dot x ly np.sqrt y.dot y 相當於勾股定理,求得斜線的長度 cos angle x.dot y lx ly 求得cos sita的值再反過來計算...

python 求兩個向量的順時針夾角

以上述舉例,要求 ob vec ob相對 oa vec oa的順時針夾角。注意 這裡使用影象座標系 1 定義求順時針角度的函式 import numpy as np defclockwise angle v1,v2 x1,y1 v1 x2,y2 v2 dot x1 x2 y1 y2 det x1 y...

洛谷P4137 求區間mex

n個數 給m個詢問 每個詢問問這個區間的自然數mex 很久以前做得 有些忘了 首先我們要離散化 mex只可能是 0 a i a i 1 我們把這些值離散化 然後用主席樹維護每種值出現的最晚位置 取min 詢問就是 在r的這顆樹上面 出現最晚位置小於l的最小值 直接在主席樹上二分即可 includeu...