前段時間又重新回顧了線性代數的課本,感悟頗多。才漸漸體會到,大學數學課程的安排,分割為微積分、線性代數和概率論是多麼的合理!
矩陣,說它多重要都不為過,尤其是大型複雜的計算。numpy對於python的擴充套件,相當程度體現在對於矩陣運算的支援上。
example1
建立矩陣
# -*-coding:utf-8-*-
import numpy as np
import matplotlib.pyplot as plt
# 建立矩陣
a = np.mat('1 2 3; 4 5 6; 7 8 9')
print "creation from string", a
# t屬性即為轉置矩陣
print "transpose", a.t
# i屬性為逆矩陣
print "inverse", a.i
# 通過numpy陣列建立
print "creation from array", np.mat(np.arange(9).reshape(3, 3))
結果如下:
從已有矩陣建立新矩陣
# 從已有矩陣建立新矩陣
a = np.eye(2)
print 'a', a
b = a * 2
print "b", b
print "compound matrix\n", np.bmat("a b; a b") # 有點像分塊矩陣
結果如下:
除法運算
# 除法運算
a = np.array([2, 6, 5])
b = np.array([1, 2, 3])
print "divide", np.divide(a, b), np.divide(b, a) # 相當於"/"
print "true divide", np.true_divide(a, b), np.true_divide(b, a)
print "floor divide", np.floor_divide(a, b), np.floor_divide(b, a) # 相當於"//"
結果如下:
注意:這裡尤為需要注意的是divide和floor divide,兩者的區別在於分子分母有浮點數時的計算方式不同
example4
模運算# 模運算
a = np.arange(-4, 4)
print "a", a
print "remainder", np.remainder(a, 2) # 相當於"%", mod
print "fmod", np.fmod(a, 2) # fmod的區別在於處理負數的方式
結果如下:
example5
建立斐波那契數列
# 建立斐波那契數列
f = np.matrix([[1, 1], [1, 0]]) # 特殊的矩陣
print "f", f
print "8th fibonacci", (f**7)[0, 0]
結果如下:
其實很簡單!
example6
利薩如曲線
x = a sin(at+n/2)
y = b sin(bt)
這裡我們令a=b=1
# 繪製利薩如曲線
# 初始化相關引數
a = 9
b = 8
n = np.pi
t = np.linspace(-np.pi, np.pi, 201) # 產生-pi~pi均勻分布的201個點
x = np.sin(a * t + n / 2)
y = np.sin(b * t)
plt.plot(x, y)
plt.show()
結果如下:
這裡想要表達的是numpy內建的函式非常的好用!
總結:這一次的練習還算簡單,當然這只是入門,為接下來的工作打好基礎。下一次要學習的,是numpy中的一些經常用到的模組,不得不說,numpy的功能的確強大,matplotlib的製圖能力亦然。
源**:
Numpy學習筆記(四)陣列屬性
一 陣列屬性 usr bin env python coding utf 8 author jia666 time 2021 2 20 16 44 import numpy as np a np.array 1,2,3 4,5,6 7,8,9 todo 1 檢視a的值 print a 1 2 3 4...
numpy的學習筆記(四) 便捷函式
第四章 便捷函式 1 協方差 np.cov a,b 2 對角線元素 covariance.diagonal 3 矩陣跡 covariance.trace 4 相關係數 np.correoef a,b 5 標準差 a.std 6 方差 a.var 7 多項式擬合 擬合 np.polyfit t,var...
Numpy學習筆記
測試檔案裡的資料排列型別最好是有規律的,不可以隨便,否則將發生一些錯誤 genfromtxt函式 genfromtxt函式建立陣列 資料 genfromtxt主要執行兩個迴圈運算。第乙個迴圈將檔案的每一行轉換成字串序列。第二個迴圈將每個字串序列轉換為相應的資料型別。genfromtxt能夠考慮缺失的...