Python-01矩陣、數組和列表等的總結


python的基礎知識總結

使用到了numpy庫,所以第一步需要

import numpy as np

1.創建矩陣

  1.1一般矩陣的創建

創建一個二維的矩陣,並使用ndim、shape、size分別獲取矩陣的維度,大小,元素個數。

# 1)創建矩陣
a1 = np.array([[1,2,3],
              [2,3,4]])
print("矩陣a1:\n",a1)
print("number of dimension:",a1.ndim)
print("shape:",a1.shape)
print('size:',a1.size)
# matrix 方式創建
a3 = np.matrix([[1,2,3],
                [4,5,6]])
print("a3:\n",a3)
# mat方式 
from numpy import *
data1 = mat(zeros((3,3)))#創建一個3*3的零矩陣
data2 = mat(ones( (2,4)) ) #創建一個 全1矩陣
data3 = mat(random.rand(2,2)) #這里的random模塊使用的是numpy中的random模塊,random.rand(2,2)創建的是一個二維數組,需要將其轉換成#matrix
data4 = mat(random.randint(10,size=(3,3))) # 10以內的隨機3*3 矩陣
data5 = mat(random.randint(2,8,size=(2,6))) # 產生一個2-8之間隨機整數的矩陣
data6 = mat(eye(2,2,dtype=int)) #產生一個2*2 的對角矩陣
# 對角矩陣
b = [1,2,3]
b1 = mat(diag(b)) # 生成一個對角線為1 2 3 的對角矩陣
print("對角矩陣為:\n",b1)

  

 

  1.2特殊矩陣的創建 

import numpy as np

# 特殊矩陣的創建
# numpy 的類型 arange有序數列 linspace的使用
a = np.array([2,3,4],dtype=np.int32)
print(a.dtype)
b = np.arange(10,20,2)
print(b)
c = np.arange(12).reshape((3,4))
print(c)
d1 = np.linspace(1,20,10)
print(d1)
d2 = np.linspace(1,20,10).reshape((2,5))
print(d2)

data1 = np.zeros((3,5))
print("全零矩陣:\n",data1)
data2 = np.ones((3,4),dtype=np.int16)
print("全一陣:\n",data2)
data3 = np.empty((3,4),dtype=np.float32)
print("empty:\n",data3)

  

2.矩陣的運算

# 矩陣的運算
print("# 矩陣的運算:")
c1 = mat([1,2,3])
c2 = mat([[1],[2],[3]])
c3 = c1*c2
print("矩陣乘運算結果:",c3)

c4 = multiply(c1,c2)
print("矩陣對應元素相乘:\n",c4)
c5 = c1 * 2
print("矩陣擴大多少倍:",c5)

# 矩陣的逆 轉置
print("# matrix 求逆:")
d1 =mat(eye(2,2)*0.5)
d2 = d1.I #求矩陣得逆矩陣
print("矩陣的逆矩陣為:\n",d2)
d3 = d1.T
print("矩陣的轉置:\n",d3)
# 矩陣的每一列、行的和
d4 = mat([[1,1],[2,3],[4,2]])
d5 = d4.sum(axis=0)   #列求和
d6 = d4.sum(axis=1)  #行求和
print("列求和:\n",d5)
print("行求和:\n",d6)
d7 = sum(d4[1,:]) #計算第一行所有列之和
d8 = sum(d4[:,1])# 矩陣行數 0 1 2行  列數 0 1 列
print("注意d4矩陣:",d7) # 2+3=5
print("注意d4矩陣:",d8) # 1+3+2=6

# 計算最大值和最小值 和索引
d9 = d4.max()
print("d4 matrix max:",d9)
d10 = max(d4[:,1]) #計算第二列的最大值
print("第二列最大值:",d10)  #此方法得到的是矩陣
d11 = d4[1,:].max()
print("第二列最大值:",d11)  # this way calclulate a number
d12 = np.max(d4,0) #計算所有列的最大值
print("所有列的最大值:",d12)
d13 =np.max(d4,1) #計算所有行的最大值
print("所有行的最大值:\n",d13)
d14 = np.argmax(d4,0) #計算所有列的最大值對應的索引
print("所有列最大值對應的索引:\n",d14)
d15 = np.argmax(d4[1,:]) #
print("第二行最大值對應改行的索引:",d15)

e1 = mat([[1,2,3],[4,5,6],[7,8,9]])
e2 = e1[1:,1:] #分割出矩陣第二行,第二列以后的元素
print("矩陣的分割:\n",e2)

e3 = mat(ones((2,2)))
e4 = mat(eye(2))
e5 = vstack((e3,e4))  #按列合並,增加了行數
print("矩陣列合並:\n",e5)
e6 = hstack((e3,e4))
print("矩陣的行合並:\n",e6)

f1 = [[1],'hello',3]

f2 = array([[1,2,3],[2,3,4]])
dimension = f2.ndim
m,n = f2.shape
number = f2.size #元素總數
str = f2.dtype #元素的類型
print("矩陣的維數:",dimension)
print("矩陣的行數和列數:",m,n)
print("矩陣元素總個數:",number)
print("元素的類型:",str)

3 矩陣、列表、數組之間轉換

g1 = [[1,2],[3,2],[4,5]]  #列表
g2 = array(g1)  #將列表轉化為二維數組
g3 = mat(g1) #將列表轉化為矩陣
g4 = array(g3) #將矩陣轉化為數組
g41 = g3.getA() #將矩陣轉化為數組
g5 = g3.tolist() #將矩陣轉化為列表
g6 = g2.tolist() #將數組轉化為列表
print("列表:",g1)
print("數組:",g2)
print("矩陣:",g3)
print("矩陣轉為數組:",g4)
print("矩陣轉為數組:",g41)
print("矩陣轉化為列表:",g5)
print("數組轉化為列表:",g6)

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM