當前位置:首頁 » 編程語言 » python向量運算

python向量運算

發布時間: 2022-09-03 00:18:53

python 中 numpy 的(2,1)維列向量 為什麼可以乘(2,2)維向量

numpy中直接用 * 即可表示數與向量的乘法,參考python 2.7的一個例子:
inport numpy as np
a = np.array([1,2,3,4]) # 向量
b = 5 # 數
print a*b
++++++++++++
[5,10,15,20]

② Python 裡面向量該怎樣運算

首先要寫上這一句:
from numpy import *
(寫上這句的前提也得你已經安了numpy)
(1) 定義一個零向量(4維):
>>>a=zeros(4)
>>>a
array([0.,0.,0.,0.])
定義一個List:
b=[1,2,3,4]
(2)向量可直接與List相加:
>>>c=a+b
>>>c
array([1.,2.,3.,4.])

(3)要給向量里每個元素都乘以同一個數:
>>>d=b*[3]
或者:
>>>c=3
>>>d=b*[c]
>>>d
array([3.,6.,9.,12.])

而不能是d=b*3,即要乘的這個數字得是個List形式
(4)兩個向量相除(對應元素相除):
>>>e=[3,2,3,4]
>>>f=d/e
>>>f
array([1.,3.,3.,3.])

③ 使用Python編寫一個三維向量,實現向量的加法減法,點乘叉乘

#--coding:gb2312--

classvector3:

def__init__(self,x_=0,y_=0,z_=0):#構造函數

self.x=x_

self.y=y_

self.z=z_

def__add__(self,obj):#重載+作為加號

returnvector3(self.x+obj.x,self.y+obj.y,self.z+obj.z)

def__sub__(self,obj):#重載-作為減號

returnvector3(self.x-obj.x,self.y-obj.y,self.z-obj.z)

def__mul__(self,obj):#重載*作為點乘

returnvector3(self.x*obj.x,self.y*obj.y,self.z*obj.z)

def__pow__(self,obj):#重載**作為叉乘。不好,偏離了常理上的意義,可以考慮重載其他符號,或者直接寫函數。

returnvector3(self.y*obj.z-obj.y*self.z,self.z*obj.x-self.x*obj.z,self.x*obj.y-obj.x*self.y)

def__str__(self):#供print列印的字元串

returnstr(self.x)+','+str(self.y)+','+str(self.z)

v1=vector3(1,2,3)

v2=vector3(0,1,2)

printv1+v2

printv1-v2

printv1*v2

printv1**v2

結果:

④ python多個向量怎麼聚合成一個向量

將向量相加,然後除以總數,得出中心點,過來另一個向量,計算距離就可以了。

如果你想說的是KMeans這種聚類方法的話,簡單給你介紹一下:

類別

聚類演算法 非監督學習演算法

參數

k值 : 分成的類的數量
距離公式 : 計算距離
閥值 : 距離大於閥值要重新計算

演算法詳細

step 1 : 隨機選取k個點作為簇團中心點
step 2 : 將元數據中各數據劃分到距離最近的一個中心點所對應的簇團中
step 3 : 重新計算出各簇團的中心點,再將元數據中各數據劃分到距離最近的一
個中心點所對應的簇團中
step 4 : 重新計算中心點,計算中心點與前回中心點的距離,如果距離大於閥值,
跳到step3,否則結束

⑤ python中向量指的是什麼意思


一、向量是什麼

在數學中,向量(也稱為歐幾里得向量、幾何向量、矢量),指具有大小(magnitude)和方向的量。它可以形象化地表示為帶箭頭的線段。箭頭所指:代表向量的方向;線段長度:代表向量的大小。與向量對應的只有大小,沒有方向的量叫做數量(物理學中稱標量)

在這里,向量即一維數組,用 arange 函數創建向量是最簡單的方式之一:

arange函數也可以指定初始值、終止值和步長來創建一維數組:

向量還能直接對每個元素進行運算:

二、創建向量

上面使用 arange 則是創建向量的一種方式,其實只要是數組創建的函數均可以創建向量,如:

linspace() 函數

前文介紹:linspace 通過制定初始值、終止值和元素個數創建等差數列向量,通過endpoint 參數指定是否包含終止值,默認為True

logspace() 函數

同linspace,創建等比數列,基數通過base參數指定,默認基數為10

zeros() 函數和 ones() 函數

這兩個函數分別可以創建指定長度或形狀的全0或全1的 ndarray 數組,比如:

指定數據類型:

empty() 函數

這個函數可以創建一個沒有任何具體值的 ndarray 數組,例如:

random.randn() 函數

randn 是 numpy.random 中生成正態分布隨機數據的函數

fromstring() 函數

從字元串創建數組

上面從字元串創建的數組,定義為整形8bit,創建出來的其實就是字元串的ASCII 碼

fromfunction() 函數

從函數創建數組,是數據分析常見的方法

可先定義一個從下標計算數值的函數,然後用fromfunction 創建數組

fromfunction 第一個參數為計算每個數組元素的函數名,第二個參數指定數組的形狀。因為它支持多維數組,所以第二個參數必須是一個序列。

例如我創建一個九九乘法表:

注意,fromfunction 函數中的第二個參數指定的是數組的下標,下標作為實參通過遍歷的方式傳遞給函數的形參。

眾多python培訓視頻,盡在python學習網,歡迎在線學習!

⑥ python計算每兩個向量之間的距離並保持到矩陣中

在很多演算法中都會涉及到求向量歐式距離,例如機器學習中的KNN演算法,就需要對由訓練集A和測試集B中的向量組成的所有有序對(Ai,Bi),求出Ai和Bi的歐式距離。這樣的話就會帶來一個二重的嵌套循環,在向量集很大時效率不高。
這里介紹如何將這一過程用矩陣運算實現。
假設有兩個三維向量集,用矩陣表示:

A=[a11a12a21a22a31a32]

B=⎡⎣⎢⎢b11b12b13b21b22b23b31b32b33⎤⎦⎥⎥

要求A,B兩個集合中的元素兩兩間歐氏距離。

先求出ABT:

ABT=⎡⎣⎢⎢⎢⎢⎢∑k=13ak1bk1∑k=13ak2bk1∑k=13ak1bk2∑k=13ak2bk2∑k=13ak1bk3∑k=13ak2bk3⎤⎦⎥⎥⎥⎥⎥

然後對A和BT分別求其中每個向量的模平方,並擴展為2*3矩陣:

Asq=⎡⎣⎢⎢⎢⎢⎢∑k=13(ak1)2∑k=13(ak2)2∑k=13(ak1)2∑k=13(ak2)2∑k=13(ak1)2∑k=13(ak2)2⎤⎦⎥⎥⎥⎥⎥

Bsq=⎡⎣⎢⎢⎢⎢⎢∑k=13(bk1)2∑k=13(bk1)2∑k=13(bk2)2∑k=13(bk2)2∑k=13(bk3)2∑k=13(bk3)2⎤⎦⎥⎥⎥⎥⎥

然後:

Asq+Bsq−2ABT=⎡⎣⎢⎢⎢⎢⎢∑k=13(ak1−bk1)2∑k=13(ak2−bk1)2∑k=13(ak1−bk2)2∑k=13(ak2−bk2)2∑k=13(ak1−bk3)2∑k=13(ak2−bk3)2⎤⎦⎥⎥⎥⎥⎥

將上面這個矩陣一開平方,就得到了A,B向量集兩兩間的歐式距離了。
下面是Python實現:
import numpy
def EuclideanDistances(A, B):
BT = B.transpose()
vecProd = A * BT
SqA = A.getA()**2
sumSqA = numpy.matrix(numpy.sum(SqA, axis=1))
sumSqAEx = numpy.tile(sumSqA.transpose(), (1, vecProd.shape[1]))
SqB = B.getA()**2
sumSqB = numpy.sum(SqB, axis=1)
sumSqBEx = numpy.tile(sumSqB, (vecProd.shape[0], 1))
SqED = sumSqBEx + sumSqAEx - 2*vecProd
ED = (SqED.getA())**0.5
return numpy.matrix(ED)

⑦ Python中怎樣計算兩個向量的內積

這是從物理實踐中來,在物理計算中,經常會用到一個向量投影到另一個向量的方向,然後再乘以另一個向量的模.而且這樣的演算法表示固定的物理意義.由於經常會遇到這種問題,於是有人就這樣定義了內積,是為了便於書寫和直觀辨認.一個式子太長或太復雜就會給計算帶來很多的不便,定義了簡便的式子有助有從數學上理解物理.至於為什麼兩個向量的內積是常數,這就是定義,定義成常數罷了.內積的公式還是很簡單的,外積的就復雜得多.

⑧ python 中的向量怎麼表示

可以用numpy 庫
np.mat([[a],[b],[c]])
表示一個3*1 列向量 (a,b,c)^T

⑨ python方向向量要怎麼表示

向量本身屬於矢量,有大小也有方向,大小就稱為向量的模,向量的方向就是指坐標原點到該向量坐標點的方向。比如向量A=(m,n)。 向量符號是在英文字母的上方加一個箭頭符號。用域功能也可以很容易實現這個要求。 在大括弧中輸入域代碼「eq \o(→,a...

⑩ python的例題解法

不看numpy一維數組的話,就是len相同的一個列表相同索引值相加吧。

x1=[1,2,3]

x2=[4,5,6]

x3=[]

defadd():

foriinrange(0,len(x1)):

x3.append(x1[i]+x2[i])

returnx3

print(add())

熱點內容
炸圖腳本 發布:2025-01-15 19:56:07 瀏覽:428
八字源碼 發布:2025-01-15 19:54:47 瀏覽:371
伺服器可以變電腦使用嗎 發布:2025-01-15 19:40:29 瀏覽:201
傳奇手游免費腳本 發布:2025-01-15 19:30:21 瀏覽:300
我國當前資源配置存在哪些問題 發布:2025-01-15 19:25:03 瀏覽:514
存儲在哪裡呀 發布:2025-01-15 19:11:39 瀏覽:450
pythonuniquelist 發布:2025-01-15 19:10:41 瀏覽:477
怎麼升安卓系統下載 發布:2025-01-15 19:04:27 瀏覽:894
mcrypt擴展php 發布:2025-01-15 19:01:12 瀏覽:436
html源碼解析 發布:2025-01-15 19:01:10 瀏覽:223