python學習筆記--6.python中的matlab矩陣
阿新 • • 發佈:2018-12-10
這是在學習Python的時候做的筆記,有些時間了,大概是按照一本挺實用的入門書籍學的,我學習程式設計的思路一般是掌握基礎的變數型別,語法-分支結構 函式呼叫 類建立 結構體定義,記錄一些簡單的例項,剩下的就是需要用什麼百度現學。
對我來說python的優勢是,沒有型別要求,不用宣告,沒有指標,萬能陣列,庫很強大。
以前已知使用matlab做矩陣的運算,現在沒想到python中也有這個庫,功能還挺全的
程式碼
from numpy import *
import numpy as np
# 兩種引用差很多 這種才能完全引用 最上面的只是函式
# 使用array函式建立時,引數必須是由方括號括起來的列表,而不能使用多個數值作為引數呼叫array。
# 可以在建立時顯式指定陣列中元素的型別 dtype 可作為可選引數
a1 = array([1, 2, 3])
a2 = array([9, 8, 7])
a3 = a1 + a2
a4 = a1 * 2
a5 = a1 ** 2
a6 = a1 * a2 # 乘法 平方 點乘
# 基本資料選擇
b1 = array([[1, 2, 3], [4, 5, 6]])
print(str(b1[0])) # 第一行
print(str(b1[0][0])) # 第一個元素 b1[0, 0]一樣的
print(b1[:, 1:]) # 選擇維度的方法同原操作型別 : 可使用變數定義
# 常用的生成矩陣函式
c1 = ones((2, 3)) # 1矩陣
c2 = zeros((2, 2)) # 0 矩陣
c3 = full((3, 4), 7) # 滿矩陣 7
c4 = eye(3) # 對角矩陣
c5 = arange(10, 30, 5) # 數列陣列 差值為5 arange(6)為[0,1,2,3,4,5]
# arrange精度有限 所以使用logspace
c6 = logspace(0, 1, 100, base=10) # 100個0-1的數字 基礎加10(可選引數)
# random自帶許多分佈的api
c7 = np.random.rand((2, 3)) # 均勻分佈隨機陣列
c8 = random.randint(1 , 100, [5, 5]) # 5*5 1-100的隨機整數
c9 = random.randn(3, 3) # 正態分佈
# 矩陣變換
# 矩陣維度變換
d1 = arange(6).reshape((2, 3)) # 產生[0,..5]變為2行3列
# 矩陣的拓展 tile
x = mat([1, 2, 3])
tile(x, (2, 3)) # 拓展為2行3列
# 建立矩陣 上文的好像都是陣列。。。。
m = mat([0, 1, 2]) # 真的矩陣 取值方法只有m[0,1]
print(m[0, 1])
list = [3, 4, 5, 6] # 列表可以轉換為矩陣
m = mat(list)