python范數
『壹』 怎麼用python完成以下內容
答: 首先本題分為兩個內容,第1個創建10X10的隨機數組,並將其存儲到 Txt文件中,其次再將其讀出進行相關統計分析。具體代碼如下所示。
『貳』 怎樣用python計算兩個向量的歐式距離
L2距離就是二范數,用norm試一下。
比如兩個1D向量分別為a,b,則歐式距離可以表示為:
norm(a-b), 相當於
sqrt(sum((a-b).^2))
『叄』 給定一個全是數值型數據的數據集,python 計算數據集中每個點之間的歐式距離
L2距離就是二范數,用norm試一下。
比如兩個1D向量分別為a,b,則歐式距離可以表示為:
norm(a-b), 相當於
sqrt(sum((a-b).^2))
『肆』 餘弦相似度
簡介:餘弦相似度,即兩物體之間的cos$值,值越大,表示兩物體的相似度越大。
1、向量空間餘弦相似度:即向量空間中兩夾角的餘弦值。其值在0-1之間,兩向量越接近,其夾角越小,餘弦值越接近於1。
2、n維空間的餘弦公式:
3、python中的工具:
numpy中提供了范數的計算工具: linalg.norm(),假定X、Y均為列向量,
則: num = float(X.T * Y)#若為行向量則 X * Y.T
denom = linalg.norm(X) * linalg.norm(Y)
cos = num / denom#餘弦值
sim =0.5+0.5* cos#歸一化
dist = linalg.norm(X - Y)
sim =1.0/ (1.0+ dist)#歸一化
4、例子:
***文本相似度****
sim =1.0/ (1.0+ dist)#歸一化
句子A:這只皮靴號碼大了。那隻號碼合適
句子B:這只皮靴號碼不小,那隻更合適
怎樣計算上面兩句話的相似程度?
基本思路是:如果這兩句話的用詞越相似,它們的內容就應該越相似。因此,可以從詞頻入手,計算它們的相似程度。
第一步,分詞 。
句子A:這只/皮靴/號碼/大了。那隻/號碼/合適。
句子B:這只/皮靴/號碼/不/小,那隻/更/合適。
第二步,列出所有的詞。
這只,皮靴,號碼,大了。那隻,合適,不,小,很
第三步,計算詞頻。
句子A:這只1,皮靴1,號碼2,大了1。那隻1,合適1,不0,小0,更0
句子B:這只1,皮靴1,號碼1,大了0。那隻1,合適1,不1,小1,更1
第四步,寫出詞頻向量。
句子A:(1,1,2,1,1,1,0,0,0)
句子B:(1,1,1,0,1,1,1,1,1)
到這里,問題就變成了如何計算這兩個向量的相似程度。我們可以把它們想像成空間中的兩條線段,都是從原點([0, 0, ...])出發,指向不同的方向。兩條線段之間形成一個夾角,如果夾角為0度,意味著方向相同、線段重合,這是表示兩個向量代表的文本完全相等;如果夾角為90度,意味著形成直角,方向完全不相似;如果夾角為180度,意味著方向正好相反。因此,我們可以通過夾角的大小,來判斷向量的相似程度。夾角越小,就代表越相似。
使用上面的公式(4)
計算兩個句子向量
句子A:(1,1,2,1,1,1,0,0,0)
和句子B:(1,1,1,0,1,1,1,1,1)的向量餘弦值來確定兩個句子的相似度。
計算過程如下:
計算結果中夾角的餘弦值為0.81非常接近於1,所以,上面的句子A和句子B是基本相似的
由此,我們就得到了文本相似度計算的處理流程是:
(1)找出兩篇文章的關鍵詞;
(2)每篇文章各取出若干個關鍵詞,合並成一個集合,計算每篇文章對於這個集合中的詞的詞頻
(3)生成兩篇文章各自的詞頻向量;
(4)計算兩個向量的餘弦相似度,值越大就表示越相似。
『伍』 圖像分析:邊緣檢測中的梯度運算元
邊緣檢測 是基於邊界的圖像分割方法的第一步,邊緣就是兩個不同的相鄰區域之間 灰度值 不連續或者突變的地方。因此,檢測邊緣就是,檢測灰度明顯變化的地方。而邊緣位置處灰度的明顯變化是可以藉助計算灰度的微分來檢測的。一般使用一階微分和二階微分檢測邊緣,在邊緣位置,一階微分的幅度值會有局部極值,二階微分的幅度值會出現過零點。本文主要介紹邊緣檢測中的一階微分運算元----梯度運算元,包括Roberts、Prewitt和Sobel三種運算元。
想要計算梯度圖,就要設計模板卷積,首先要搞明白圖像在計算時的坐標系,很多博文對應的模板和坐標系都不匹配,我們在後面的卷積操作中主要使用計算坐標系。
左圖Cameraman所用的坐標系統,常用在圖像計算中。其坐標原點在左上角,x軸是水平的,並且向右延伸;y是垂直的,並且向下延伸。 既可以代表這幅圖像,也可以表示 坐標處像素的值。
右圖Lena的坐標系統,常用在屏幕顯示中,因為屏幕掃描是從左向右,從上向下進行的,原點在圖像的左上角,縱軸標記圖像的行,橫軸標記圖像的列。 既可以代表這個圖像,也可以代表 行列交點處的圖像值。
首先我們要知道的是梯度是一個向量,向量的話有方向和大小,梯度方向指向函數變化最快的方向,大小就是它的模,也是最大的變化率。對於二元函數 ,它在點 的梯度就是 , 或者 ,就是:
其中, ,這個梯度向量的幅度和方向角為
下圖展示了一個灰度圖的數學化表達,像素點 的灰度值是 ,它有八個鄰域。
圖像在點 的梯度為
其中
即 對應圖像的水平方向, 即 對應水圖像的豎直方向。
要理解梯度圖的生成,就要先了解模板卷積的過程。
模板卷積是模板運算的一種方式,其步驟如下:
(1)將模板在輸入圖像中漫遊,並將模板中心與圖像中某個像素位置重合;
(2)將模板上各個系數與模板下各對應像素的灰度相乘;
(3)將所有乘積相加(為保持灰度范圍,常將結果再除以模板系數之和,後面梯度運算元模板和為0的話就不需要除了);
(4)將上述運算結果(模板的響應輸出)賦給輸出圖像中對應模板中心位置的像素。
其實梯度圖生成前面和模板卷積相同,不同的是要生成梯度圖,還需要在模板卷積完成後計算在點 梯度的幅值,將幅值作為像素值,這樣才算完。 。
下圖是生成梯度圖用到的的水平模板和豎直模板:
例如,如果只想生成水平方向的梯度圖,那麼只計算水平方向的梯度 ,則梯度圖上對應點 的灰度值就是
一般是水平方向的 和豎直方向的 各用一個模板,然後結合,那麼得到梯度圖在點 的灰度值就是
它就是我們上面說到的梯度的幅值,是以計算以2為范數,對應歐式距離,由於涉及平方和開方運算,計算量比較大。(怎麼簡化計算呢??換一種近似計算方式吧!!!)
在真實的梯度圖輸出計算中,採用以1為范數(對應城區距離)的簡單計算方式,即
另一種簡單的方式是以 為范數(對應棋盤距離),即
首先了解下梯度運算元的設計,一般是水平方向和豎直方向,水平方向模板轉置再對折就是豎直方向。
其本質是一個對角線方向的梯度運算元,對應的水平方向和豎直方向的梯度分別為
輸出梯度圖在 的灰度值為
優點:邊緣定位較准
缺點:(1)沒有描述水平和豎直方向的灰度變化,只關注了對角線方向,容易造成遺漏。(2)魯棒性差。由於 點本身參加了梯度計算,不能有效的抑制雜訊的干擾。
適用於邊緣明顯且雜訊較少的圖像。
Prewitt運算元是典型的 模板,其模板中心對應要求梯度的原圖像坐標 , 對應的8-鄰域的像素灰度值如下表所示:
通過Prewitt運算元的水平模板 卷積後,對應的水平方向梯度為
通過Prewitt運算元的豎直模板 卷積後,對應的豎直方向梯度為
輸出梯度圖在 的灰度值為
Prewitt運算元引入了類似局部平均的運算,對雜訊具有平滑作用,較Roberts運算元更能抑制雜訊。
通過Prewitt運算元的水平模板 卷積後,對應的水平方向梯度為
通過Prewitt運算元的豎直模板 卷積後,對應的豎直方向梯度為
輸出梯度圖在 的灰度值為
Sobel運算元引入了類似局部加權平均的運算,對邊緣的定位比要比Prewitt運算元好。
Python 調用OpenCV介面實現Sobel運算元邊緣檢測
『陸』 如何用python把pdf轉為cad
1.准備一款專業的CAD轉換器,如果你的電腦里有可以直接打開。
2.打開運行軟體,在軟體界面的左側我們找到「PDF轉CAD」功能。
3.選擇好了轉換類型,接下來就是添加文件,添加文件有兩個方法,一個是點擊界面中的「添加文件」,一個是直接把你的文件拖到軟體的指定區域;
4.文件添加好後,要是需要自定義選擇轉換後文件儲存的位置選擇「瀏覽」按鈕,選擇好儲存位置便可。
5.轉換界面可以進行轉換後文件格式的選擇,有「DWG、DXF」兩種格式進行選擇,可以根據自己的需求選擇輸出格式。
6.擊「批量轉換」按鈕開始文件的轉換,當所有的文件轉換狀態為百分百的時候就說明文件轉換完成了。
『柒』 如何用python表示三角函數
在python中,有一個math mole,你可以import math,裡面有math.sin(), math.cos(), math.asin()和math.acos()四個函數。相信你也知道asin和acos的意思,就是arcsin和arccos。有了這四個函數你就可以求函數值和角度了。但是要注意括弧裡面填的數值,要用弧度制。
『捌』 python中 norm可以實現什麼
你可以通過print help(norm)來查看裡面實現的功能,介紹的還比較詳細
『玖』 關於向量范數的理解
最近搞深度學慣用到了范數的概念(准確地說是 向量 范數),我在這里作一下簡單的解釋,未必100%准確,但是對我來說已經夠用了。
首先,在試圖理解之前,我們先看一下它們的數學定義:
由上面的數學表達式,我們可以歸納一下:除了兩個無窮范數以外,剩下的范數都是一個規律,即n范數就是一堆數字的n次方之和再開個n次方的根號;或者說,n范數就是一堆數字的n次方之和的n次方根。這是從 計算方法 層面上的認知。
那麼從 物理意義 上又該如何認識和理解呢?
通過上面的觀察可知,范數首先是一個 函數 。其次,范數表徵了 距離 這個物理量,可以用於 比較 不同的向量。
我們最熟悉的應該就是2-范數,它常被用來計算兩個點的歐氏距離。
我們上面談到范數的計算方法層面的理解時,用了大白話的方式,並不是准確的數學語言,主要是為了讓你對范數有一個直觀上的理解。下面我們用稍嚴謹一些的語言來闡釋一個常用的情況,即2-范數,來看看我們是如何利用2-范數來求歐氏距離的。
我們在上面說, 「n范數就是一堆數字的n次方之和的n次方根」 ,這里所謂的「 一堆數字 」,實際上是一個向量的多個維度的坐標。我們假設這個向量x = (x1, x2, x3, x4, x5),這一堆數字實際上就是x1, x2, x3, x4, x5,就是向量x在空間中的五個維度上的度量(或「刻度值」)。當我們把x的各維度平方求和再開平方之後,得到的數值表示什麼意義呢?還記得我們說范數可以表徵距離嗎?
也就是說,x的2-范數表示了x這個點與空間原點的距離,也相當於x這個向量的長度。
所以,當我們想求一個向量的長度或者兩點間的距離時,可以用2-范數。
例如,在python中,藉助numpy庫,我們可以這樣寫:
『拾』 常微分方程的解析解(方法歸納)以及基於Python的微分方程數值解算例實現
本文歸納常見常微分方程的解析解解法以及基於Python的微分方程數值解算例實現。
考慮常微分方程的解析解法,我們一般可以將其歸納為如下幾類:
這類微分方程可以變形成如下形式:
兩邊同時積分即可解出函數,難點主要在於不定積分,是最簡單的微分方程。
某些方程看似不可分離變數,但是經過換元之後,其實還是可分離變數的,不要被這種方程迷惑。
形如
的方程叫做一階線性微分方程,若 為0,則方程齊次,否則稱為非齊次。
解法: (直接套公式)
伯努利方程
形如
的方程稱為伯努利方程,這種方程可以通過以下步驟化為一階線性微分方程:
令 , 方程兩邊同時乘以 ,得到
即 .
這就將伯努利方程歸結為可以套公式的一階線性微分方程。
形如
的方程稱為二階常系數微分方程,若 ,則方程稱為齊次的,反之稱為非齊次的。以下默認方程是非齊次的。
求解此類方程分兩步:
原方程的解 = 齊次通解 + 非齊次特解
首先假設 .用特徵方程法,寫出對應的特徵方程並且求解:
解的情況分為以下三種:
情況一:方程有兩個不同的實數解
假設兩個實數解分別是 , 此時方程的通解是
情況二:方程有一個二重解
假設該解等於 ,此時方程的通解是
情況三:方程有一對共軛復解
假設這對解是 , 此時方程的通解是
對於 和特徵根的情況,對特解的情況做如下歸納:
形如
的方程叫做高階常系數微分方程,若 ,則方程是齊次的,否則是非齊次的。下面默認方程是非齊次的。
求解此類方程分兩步:
原方程的解 = 齊次通解 + 非齊次特解
考慮帶有第三類邊界條件的二階常系數微分方程邊值問題
問題一:兩點邊值問題的解析解
由於此方程是非齊次的,故 求解此類方程分兩步:
原方程的解 = 齊次通解 + 非齊次特解
首先假設 . 用特徵方程法,寫出對應的特徵方程
求解得到兩個不同的實數特徵根: .
此時方程的齊次通解是
由於 . 所以非齊次特解形式為
將上式代入控制方程有
求解得: , 即非齊次特解為 .
原方程的解 = 齊次通解 + 非齊次特解
於是,原方程的全解為
因為該問題給出的是第三類邊界條件,故需要求解的導函數
且有
將以上各式代入邊界條件
解此方程組可得: .
綜上所述,原兩點邊值問題的解為
對一般的二階微分方程邊值問題
假定其解存在唯一,
為求解的近似值, 類似於前面的做法,
考慮帶有第三類邊界條件的二階常系數微分方程邊值問題
問題二:有限差分方法算出其數值解及誤差
對於 原問題 ,取步長 h=0.2 ,用 有限差分 求其 近似解 ,並將結果與 精確解y(x)=-x-1 進行比較.
因為
先以將區間劃分為5份為例,求出數值解
結果:
是不是解出數值解就完事了呢?當然不是。我們可以將問題的差分格式解與問題的真解進行比較,以得到解的可靠性。通過數學計算我們得到問題的真解為 ,現用范數來衡量誤差的大小:
結果:
接下來繪圖比較 時數值解與真解的差距:
結果:
將區間劃分為 份, 即 時.
結果:
繪圖比較 時數值解與真解的差距:
最後,我們還可以從數學的角度分析所採用的差分格式的一些性質。因為差分格式的誤差為 , 所以理論上來說網格每加密一倍,與真解的誤差大致會縮小到原來的 . 下討論網格加密時的變化:
結果: