Python基礎教程之陣列型別

2021-09-14 07:17:09 字數 3198 閱讀 4869

python 學習之陣列型別一:

numpy 中的向量與矩陣:

1.建立:  向量、矩陣均由 array 函式建立,區別在於向量是 v=array( [ 逗號分隔的元素 ] ) ,

矩陣是 m=array( [[ ]] )   注意矩陣是雙方括號

向量可以執行基本的線性代數運算( 運算是基於元素的運算 ),例如標量乘法 / 除法、線性組合、範數、標量積等。

2.訪問陣列項: 向量索引與切片類似於字串與列表

通過索引訪問矩陣(陣列項),需要兩個索引來訪問,這些索引都在一對方栝號裡。 例如: m[2:4,1:4]   表示行與列的切片

一些切片原則:

矩陣 [index,index]     得到維數為 0 的標量

矩陣 [ 索引,切片 ] 或者 [ 切片,索引 ]   得到維數為 1 的向量

矩陣 [ 切片,切片 ]     得到維數為 2 的矩陣

使用切片修改(替換)矩陣中的乙個元素,一整行,整個子矩陣。

3.陣列建構函式: ---- 用於一些構造陣列的命令生成特殊的矩陣。

v=array([3.,5.,8.])

① i=diag(v,0)   #diag(v,k) 生成的結果是來自向量 v 的對角 n 階方陣 , 前 k 列元素均為零    

print(i)

②t=zeros((2,2,3))   # 張量 t (向量、矩陣或更高階張量)的函式 ndim 給出的維數總是等於其形狀的長度

print(t)

print(ndim(t))       # 使用陣列屬性 t.ndim 或者函式 numpy.nidm 來獲取陣列的維數

print(shape(t))       # 陣列屬性 :shape 獲取陣列的維度  例如( 2 , 3 )表示二行三列矩陣

print(len(shape(t)))

③a=ones((2,3))    # 生成的是由 1 填充的 2 行 3 列的矩陣

print(a)

④t=random.rand(3,3)    #random.rand(n,m) 生成由( 0 , 1 )中平均分布的隨機數(填充)構成的 n 行 m 列矩陣

print(t)

⑤a=arange(3)      #arange(n) 返回元素為前 n 個整數的向量

print(a)

⑥v=linspace(1,2,4)    #linspace(a,b,n) 生成由平均分布在 a 與 b 之間的 n 個點組成的向量

print(v)

⑦i=identity ( n )     # 生成階數為 n 的單位矩陣

訪問和修改陣列形狀

訪問 :用 reshape 函式或者陣列屬性 shape 來訪問

陣列的形狀是元組,例如 n*m 的矩陣的形狀是元組( n , m )

矩陣: shape ( a )   # 返回矩陣的形狀( n,m )

向量: shape ( v )   # 返回( n, )  注意:向量形狀是包含向量長度 n 的單元素元組

修改陣列形狀:是指在不複製資料的情況下給出陣列的新檢視。

重塑 : reshape ()函式    

例如 :

v=array([0,1,2,3,4,5])

m=v.reshape(2,3)     #reshape( )函式在不複製資料的情況下給出了乙個陣列的新檢視

# 將向量 v 生成乙個二行三列的矩陣

print(m)

print(shape(m))   # 返回( 2 , 3 )

m[0,0]=10

print(v)   #v=[10,1,2,3,4,5] 現在的 v[0] 是 10     注意:更改 m 中的 m 中的乙個元素導致 v

# 中相應的元素自動地發生變化。

v=array([1,2,3,4,5,6,7,8])

m=v.reshape(2,-1)           # 僅指定乙個形狀也很方便,並讓 python 以與原始形狀相乘的方式來確定另乙個形狀引數

# 通過設定自由形狀引數 -1 來實現

print(shape(m))     # 返回( 2 , 4 )兩行四列的矩陣

print(m)

m=v.reshape(-1,2)

print(shape(m))    # 返回形狀( 4 , 2 )的矩陣

print(m)

m=v.reshape(3,-1)    # 如果嘗試不與初識形狀值相乘的形狀的陣列,則返回錯誤

print(shape(m))

轉置   矩陣轉置與向量有所區別:

例如: a = array([[1.,2.],[3.,4.]])

b=a.t         # 轉置矩陣用  矩陣 .t 即( a.t )來切換矩陣的兩個形狀元素

print(a)

print(b)

a[1,1]=5.

print(b[1,1])   # 返回 5

注意: v.t 返回相同的向量

v=array([1.,2.,3.])          # 轉置向量,使用 --- 向量 .reshape()--- 來實現

print(v.t)

print(v.reshape(1,-1))     #v 的行向量

print(v.reshape(-1,1))     # 返回 v 的列向量

2 .疊加 :

# 疊加     concatennate() 方法

a1=array([[1.,2.,3.],[4.,5.,6.]])

a2=array([[0.,1.,3.],[7.,8.,9.]])

a=concatenate((a1,a2),axis=1)     # 構造矩陣的通用方法 concatenate((a1,a2,...),axis=0/1)

print(a)                        # 前提是用一對相匹配的子矩陣, axis=0 時,子矩陣垂直疊加; axis=1時,子矩陣水平疊加

# 假設有乙個長度為 2n 的向量,要對具有偶數個分量的向量執行偶排列

v=array([0,1,2,3,4,5,6,7,8,9])

def symp(v):

n=len(v)//2

return hstack([v[-n:],-v[:n]])

print(symp(v))        # 將符號變化的向量的前半部分和後半部分進行交換

python基礎教程之Hello World

python命令列 假設你已經安裝好了python,那麼在linux命令列輸入程式設計客棧 複製 如下 python 將直接進入python。後面輸入 複製 如下 print hello world 可以看到,隨後在螢幕上輸出 複製 如下 hello world print是乙個常用函式,其功能就是...

Python 基礎教程之Python 簡介

python 是一種解釋型 物件導向 動態資料型別的高階程式語言。python 是乙個高層次的結合了解釋性 編譯性 互動性和物件導向的指令碼語言。python 的設計具有很強的可讀性,相比其他語言經常使用英文關鍵字,其他語言的一些標點符號,它具有比其他語言更有特色語法結構。python 是一種解釋型...

Python 基礎教程之Python 注釋

確保對模組,函式,方法和行內注釋使用正確的風格 python中的注釋有單行注釋和多行注釋 python中單行注釋以 開頭,例如 這是乙個注釋 print hello,world 多行注釋用三個單引號 或者三個雙引號 將注釋括起來,例如 這是多行注釋,用三個單引號 這是多行注釋,用三個單引號 這是多行...