2018-01-31 转载: numpy 的矩阵简介(因为arragy更强大,所以一般都不用numpy)

转载: numpy 的矩阵简介

网址: 

http://blog.csdn.net/pipisorry/article/details/48791403

numpy矩阵简介

NumPy函数库中存在两种不同的数据类型(矩阵matrix和数组array),都可以用于处理行列表示的数字元素。虽然它们看起来很相似,但是在这两个数据类型上执行相同的数学运算可能得到不同的结果,其中NumPy函数库中的matrix与MATLAB中matrices等价。

numpy模块中的矩阵对象为numpy.matrix,包括矩阵数据的处理,矩阵的计算,以及基本的统计功能,转置,可逆性等等,包括对复数的处理,均在matrix对象中。

关于numpy中矩阵和二维数组的取舍

matrix是array的分支,matrix和array在很多时候都是通用的,但官方建议如果两个可以通用,那就选择array,因为array更灵活,速度更快,很多人把二维的array也翻译成矩阵。

matrix的优势就是相对简单的运算符号,如矩阵相乘用符号*,但是array相乘得用方法.dot()。

Note: array * mat也是矩阵相乘,而不是点乘。

array的优势就是不仅仅表示二维,还能表示3、4、5...维,而且在大部分Python程序里,array也是更常用的。

Note:

1. numpy中二维数组不支持求逆运算(给gui),但可以使用scripy中的linalg.inv()函数求逆。

2. lz建议使用二维ndarray代替matrix,结合使用scripy.linalg库可以实现全部矩阵运算。[Scipy教程 - 线性代数库linalg]

皮皮Blog

Matrix objects矩阵对象

创建示例

np.matrix

>>> a = np.matrix(’1 2; 3 4’)

>>> print a

[[1 2]

[3 4]]

>>> np.matrix([[1, 2], [3, 4]])

matrix([[1, 2],

[3, 4]])

Note:

1. class numpy.matrix(data,dtype,copy):返回一个矩阵,其中data为ndarray对象或者字符形式;dtype:为data的type;copy:为bool类型。

2. 矩阵的换行必须是用分号(;)隔开,内部数据必须为字符串形式(‘ ’),矩阵的元素之间必须以空格隔开。

3. 矩阵中的data可以为数组对象。

np.asmatrix

>>> x = np.array([[1, 2], [3, 4]])

>>> m = np.asmatrix(x)

>>> x[0,0] = 5

>>> m

matrix([[5, 2],

[3, 4]])

矩阵对象属性Attribute

2018-01-31 转载: numpy 的矩阵简介(因为arragy更强大,所以一般都不用numpy)_第1张图片

矩阵对象方法Methods

2018-01-31 转载: numpy 的矩阵简介(因为arragy更强大,所以一般都不用numpy)_第2张图片
2018-01-31 转载: numpy 的矩阵简介(因为arragy更强大,所以一般都不用numpy)_第3张图片

[numpy-ref-1.8.1 - 1.6.2 Matrix objects p120]

Matrix矩阵对象方法使用示例

>>> a = np.asmatrix('0 2 7; 3 4 8; 5 0 9')>>> a.all()False>>> a.all(axis=0)matrix([[False, False,  True]], dtype=bool)>>> a.all(axis=1)matrix([[False],[ True],[False]], dtype=bool)ü  Astype方法>>> a.astype(float)matrix([[ 12.,   3.,   5.],[ 32.,  23.,   9.],[ 10., -14.,  78.]])ü  Argsort方法>>> a=np.matrix('12 3 5; 32 23 9; 10 -14 78')>>> a.argsort()matrix([[1, 2, 0],[2, 1, 0],[1, 0, 2]])ü  Clip方法>>> amatrix([[ 12,   3,   5],[ 32,  23,   9],[ 10, -14,  78]])>>> a.clip(12,32)matrix([[12, 12, 12],[32, 23, 12],[12, 12, 32]])ü  Cumprod方法>>> a.cumprod(axis=1)matrix([[    12,     36,    180],[    32,    736,   6624],[    10,   -140, -10920]])ü  Cumsum方法>>> a.cumsum(axis=1)matrix([[12, 15, 20],[32, 55, 64],[10, -4, 74]])ü  Tolist方法>>> b.tolist()[[12, 3, 5], [32, 23, 9], [10, -14, 78]]ü  Tofile方法>>> b.tofile('d:\\b.txt')ü  compress()方法>>> from numpy import *>>> a = array([10, 20, 30, 40])>>> condition = (a > 15) & (a < 35)>>> conditionarray([False, True, True, False], dtype=bool)>>> a.compress(condition)array([20, 30])>>> a[condition]                                      # same effectarray([20, 30])>>> compress(a >= 30, a)                              # this form aso existsarray([30, 40])>>> b = array([[10,20,30],[40,50,60]])>>> b.compress(b.ravel() >= 22)array([30, 40, 50, 60])>>> x = array([3,1,2])>>> y = array([50, 101])>>> b.compress(x >= 2, axis=1)                       # illustrates the use of the axis keywordarray([[10, 30],[40, 60]])>>> b.compress(y >= 100, axis=0)array([[40, 50, 60]])

你可能感兴趣的:(2018-01-31 转载: numpy 的矩阵简介(因为arragy更强大,所以一般都不用numpy))