1. 程式人生 > >Python中的numpy矩陣運算

Python中的numpy矩陣運算

numpy中matrix 和 array的區別

Numpy matrices必須是2維的,但是 numpy arrays (ndarrays) 可以是多維的(1D,2D,3D····ND). Matrix是Array的一個小的分支,包含於Array。所以matrix 擁有array的所有特性。

在numpy中matrix的主要優勢是:
(1)相對簡單的乘法運算子號。
例如,a和b是兩個matrices,那麼a*b,就是矩陣積。

>>> import numpy as np
>>> a=np.mat('4 3; 2 1')
>>> b=np.mat('1 2; 3 4'
) >>> a matrix([[4, 3], [2, 1]]) >>> b matrix([[1, 2], [3, 4]]) >>> a*b matrix([[13, 20], [ 5, 8]])

(2)matrix 和 array 都可以通過objects後面加.T 得到其轉置。但是 matrix objects 還可以在後面加 .H得到共軛矩陣, 加 .I 得到逆矩陣。相反的是在numpy裡面arrays遵從逐個元素的運算,所以array:c 和d的cd運算相當於對應的元素相乘

>>> c=np.array([[4, 3], [2, 1]]
) >>> d=np.array([[1, 2], [3, 4]]) >>> c*d array([[4, 6], [6, 4]])

(3) 運算子的作用也不一樣 :

>>> a**2
matrix([[22, 15],
        [10,  7]])
>>> c**2
array([[16,  9],
       [ 4,  1]])

因為a是個matrix,所以a2返回的是aa,相當於矩陣相乘。而c是array,c2相當於,c中的元素逐個求平方。

(3)numpy中矩陣間的除法運算

>>> a/2
matrix([[2, 1],
        [1, 0]])
>>> a/b
matrix([[4, 1],
        [0, 0]])

取得是整數

基本運算

import numpy as np
a = np.mat([[-1,2],[2,3]])
b = np.mat([[3,4],[4,5]])
print 'a:\n',a
print 'b:\n',b
print '\n a transpose:\n',a.T #轉置
print '\n a inv:\n',np.linalg.inv(a) # 求逆
print "\n a-b: \n",a-b  # a - b,矩陣相減
print "\n a dot b: \n",a*b #2x2矩陣,矩陣相乘
print "\n a/b \n:",b/a  # numpy中的除是對矩陣元素展開計算
print "\n a trace:\n",np.trace(a)  #求跡
eigval,eigvec = np.linalg.eig(a) #特徵,特徵向量
print "\n a eig value:\n",eigval
print'\n a eig vector:\n',eigvec

a = np.zeros([4,5])
print  '\n all zero \n',a
a = np.ones([7,6])
print  '\n all one \n',a
a = np.eye(4,7)
print  '\n 4x7 diagonal \n',a
a = np.diag(range(5))
print  '\n 5x5 diagonal \n',a
a = np.empty((2,3))
print '\n empty \n',a

結果:

a:
[[-1  2]
 [ 2  3]]
b:
[[3 4]
 [4 5]]

 a transpose:
[[-1  2]
 [ 2  3]]

 a inv:
[[-0.42857143  0.28571429]
 [ 0.28571429  0.14285714]]

 a-b: 
[[-4 -2]
 [-2 -2]]

 a dot b: 
[[ 5  6]
 [18 23]]

 a/b 
: [[-3  2]
 [ 2  1]]

 a trace:
2

 a eig value:
[-1.82842712  3.82842712]

 a eig vector:
[[-0.92387953 -0.38268343]
 [ 0.38268343 -0.92387953]]

 all zero 
[[ 0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.]]

 all one 
[[ 1.  1.  1.  1.  1.  1.]
 [ 1.  1.  1.  1.  1.  1.]
 [ 1.  1.  1.  1.  1.  1.]
 ..., 
 [ 1.  1.  1.  1.  1.  1.]
 [ 1.  1.  1.  1.  1.  1.]
 [ 1.  1.  1.  1.  1.  1.]]

 4x7 diagonal 
[[ 1.  0.  0. ...,  0.  0.  0.]
 [ 0.  1.  0. ...,  0.  0.  0.]
 [ 0.  0.  1. ...,  0.  0.  0.]
 [ 0.  0.  0. ...,  0.  0.  0.]]

 5x5 diagonal 
[[0 0 0 0 0]
 [0 1 0 0 0]
 [0 0 2 0 0]
 [0 0 0 3 0]
 [0 0 0 0 4]]

 empty 
[[ 1.  0.  0.]
 [ 0.  0.  0.]]

注意矩陣除法運算的結果
print "\n a/b \n:",b/a # numpy中的除是對矩陣元素展開計算

相關推薦

python矩陣運算

創建 二維 style ron -h courier strong random 轉置 1.numpy的導入和使用 from numpy import *;#導入numpy的庫函數import numpy as np; #這個方式使用numpy的函數時,需要以np.開頭。

pythonnumpy矩陣的切片操作slicing心得

>>> d = np.array(c) >>> d array([[ 1,  2,  3,  4,  5,  6,  7,  8,  9],        [11, 12, 13, 14, 15, 16, 17, 18, 19],   

Pythonnumpy矩陣運算

numpy中matrix 和 array的區別 Numpy matrices必須是2維的,但是 numpy arrays (ndarrays) 可以是多維的(1D,2D,3D····ND). Matrix是Array的一個小的分支,包含於Array。所以mat

Cris 的 Python 資料分析筆記 03:NumPy 矩陣運算和常用函式(重點)

03. 矩陣運算和常用函式(重點) 文章目錄 03. 矩陣運算和常用函式(重點) 1. numpy 矩陣判斷和計算 1.1 與運算 1.2 或運算 1.3 或運算作為矩陣索引賦值

pythonnumpy學習

通過 import mat imp 向量 ... replace lan 維數 NumPy的主要對象是同種元素的多維數組。這是一個所有的元素都是一種類型、通過一個正整數元組索引的元素表格(通常是元素是數字)。在NumPy中維度(dimensions)叫做軸(axes),軸的

Pythonnumpy.apply_along_axis()函數的用法

lib ast view lin 分享 ocs func 作用 是我 numpy.apply_along_axis(func, axis, arr, *args, **kwargs): 必選參數:func,axis,arr。其中func是我們自定義的一個函數,函數func(

pythonnumpy計算數組的行列式numpy.linalg.det()

shape array dimens arr style 數組 -name ons github numpy.linalg.det numpy.linalg.det(a)[source] 計算任何一個數組a的行列式,但是這裏要求數組的最後兩個維度必須是方陣。 參數:

Python的三元運算

div center 否則 align 三目運算 body post 如果 pytho Python中的三元運算 三元運算又稱三目運算。 B=1 If B==1: a=123 else : a=456 上面程序等價於: B=1 a=123 if B==1 e

Python的分數運算

img 分享 windows In 分數 format user 操作 nbsp Python中的分數運算,在Python標準庫fractions中的Fraction對象支持分數運算。具體操作如下: 在windows下,通過cmd進到dos shell,輸入python3進

Python的邏輯運算

邏輯運算 not 3.0 情況下 優先 none pytho 其他 結合 1, 在沒有()的情況下not 優先級高於 and,and優先級高於or,即優先級關系為( )>not>and>or,同一優先級從左往右計算。 () > not > an

Learing-Python【3】:Python的基本運算

連接 鏈式 優先 bubuko 圖片 比較運算 我只 還需要 其中 一、算數運算 二、比較(關系)運算 比較運算只能在同類型之間進行,其中 int 與 float 同屬於數字類型 三、賦值運算 1、增量賦值    2、鏈式賦值   

pythonnumpy.zeros(np.zeros)的使用方法

用法:zeros(shape, dtype=float, order='C') 返回:返回來一個給定形狀和型別的用0填充的陣列; 引數:shape:形狀 dtype:資料型別,可選引數,預設numpy.float64 dtype型別: t ,位域,如t4代表4位 b,布林值,true o

PythonNumpy模組的使用

目錄 NumPy ndarray物件 Numpy資料型別 Numpy陣列屬性 NumPy NumPy(Numerical Python) 是 Python 的一個擴充套件程式庫,支援大量的維度陣列與矩陣運算,此外也針對陣列運算提供大量的數學函式庫。Nupmy可用來儲存和處

Python 的位運算(部分)

真值表: >>> 1 & 1 1 >>> 1 & 0 0 >>> 0 & 1 0 >>> 0 & 0 0 >>> 1 | 1 1 >>> 1 |

PythonNumpy(2,numpy的基本操作(級聯,維度轉換,切分,副本))

1. ndarray的基本操作 # 1.索引與切片 和列表的是一個道理 n2 = np.arange(0,10,1) print(n2) print(n2[::-1]) #反轉 print(n2[::2]) #按步長取資料 #2. 變形 使用reshape函式,注意引數是一個tupl

在C實現矩陣運算

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Python陣列矩陣的翻轉(翻轉180度,向左翻轉90度,向右翻轉90度)

Python中陣列矩陣的翻轉(翻轉180度,向左翻轉90度,向右翻轉90度) 轉載請表明原處:https://blog.csdn.net/kane7csdn/article/details/83928848 先定義陣列: a = np.array(([1, 2, 3], [4, 5,

Pythonnumpy的統計函式

Python中numpy的統計函式 axis = 0 / 1 / None 0代表column 1代表row None不加以區分 函式 含義 sum(a, axis=None) 根據

Pythonnumpy的隨機數函式

Python中numpy的隨機數函式 NumPy的random子庫 np.random.* 函式 含義 rand(d0,d1,..,dn) 根據d0‐dn建立d0維隨機數陣列,浮

Pythonnumpy庫入門

Python中numpy Numpy是一個開源的Python科學計算基礎庫 以下學習自中國大學MOOC 嵩天 《Python資料分析與展示》 一.Numpy庫入門 1.Numpy的引入 import numpy as np 使用別名可以縮短在程式中匯入nump