您的位置:首页 > 编程语言 > Python开发

numpy常用矩阵计算函数总结

2016-06-30 15:48 519 查看
其他操作:http://www.cnblogs.com/shuaishuai-it/p/5392880.html

导入numpy包:from numpy import *

以下所有的函数使用格式为:object.函数

例如:

a = array([[1,2,3],[2,3,4]])
a.shape
a.ndim
a.min()


array(list): 创建矩阵或高维向量,例如a = array([[0,1,2,3],[4,5,6,7]]),传入参数也可以是元组

shape: 表示向量大小的元组,例如a.shape结果为tuple,形如(2,3)

ndim: 表示矩阵或高维向量的维数,例如矩阵a的a.ndim为2

size: 表示向量总元素数

itemsize: 表示元素所占字节数

nbytes: 表示向量所占字节数

real: 所有元素的实部,返回的还是矩阵形式

imag: 所有元素的虚部,返回的还是矩阵形式

flat: 用一维数组表示矩阵或高维向量(常用于顺序遍历)

T: 表示矩阵的转置矩阵(也适用于高维向量),例如:a.T

zeros(shape): 创建全0矩阵或高维向量,例如a = zeros((2,3))

ones(shape):创建全1矩阵或高维向量,例如a = ones((2,3))

add(matrix):将矩阵对应元素相加,结果相当于直接用加号

dot(matrix)

矩阵乘法,注意必须满足“能乘”的要求

如果是*,则需注意:

例如:

aaa = array([[10,9,8],[7,6,5],[42,33,2]])
a = aaa.min(0)  #取每一列的最小值,返回的是一个数组
aaa*aaa#结果为(2),相当于aaa**2:
aaa*a  #aaa每行元素分别与a相乘,结果为(1)
a*aaa  #结果与上(1)相同
3*aaa  #aaa中每个元素乘以3


(1)aa

array([[ 70,  54,  16],
[ 49,  36,  10],
[294, 198,   4]]))


(2)aaa***2

array([[ 100,   81,   64],
[  49,   36,   25],
[1764, 1089,    4]])


15.reshape(shape)

得到改变形状的矩阵,例如a = array([[1,2,3],[4,5,6]]).reshape((3,2))的结果为[[1,2],[3,4],[5,6]]。注意矩阵的大小不能改变,即reshape的参数表示的矩阵元素数必须等于原矩阵的元素数。

16.transpose()

得到矩阵的转置矩阵,a.transpose()相当于a.T

17.swapaxes(d1,d2)

调换给定的两个维度

18.flatten()

返回对应一维向量,例如:

aaa = array([[10,9,8],[7,6,5],[42,33,2]])
aaa.flatten()
返回值为:
array([10,  9,  8,  7,  6,  5, 42, 33,  2])


19.tolist()

得到矩阵对象转化为list的结果

aa = aaa.tolist()
aa返回为list型(每一行又是一个子list):
[[10, 9, 8], [7, 6, 5], [42, 33, 2]]
aa[0]
#返回为:
[10, 9, 8]


20.min(axis)

得到所有元素中的最小值。当给定axis值(min(0)或min(axis=0))时,在该坐标上求最小值(得到数组)

例如:

aaa = array([[10,9,8],[7,6,5],[42,33,2]])
aaa.min()
返回为:aaa矩阵中所有元素的最小值
结果为:2
aaa.min(0)
返回为:aaa矩阵中所有列中元素的最小值
结果为:array([7, 6, 2])
aaa.min(1)
返回为:aaa矩阵中所有行中元素的最小值
结果为:array([8, 5, 2])


21.max(axis)

得到所有元素中的最小值。缺省参数axis作用和min()相同

22.sum()

得到数组元素之和,得到的是一个数字。

也可以aaa.sum(axis),分别求每一行或者是每一列的元素之和。


23.cumsum()

得到累计和,即依次加一个元素求和的一维数组。

例如:

aaa.cumsum()
结果为:array([ 10,  19,  27,  34,  40,  45,  87, 120, 122])


24.prod()

得到数组所有元素之积,是个数字。

也可以aaa.sum(axis),分别求每一行或者是每一列的元素之积。


25.cumprod()

得到累计积,例子形式与上面cumsum()相同,这两个函数也都可以分坐标累计加和累计乘。

26.mean()

得到元素的平均数

27.all()

如果所有元素为真,返回真;否则返回假

28.any()

如果所有元素只要有一个真,返回真;否则返回假。

29.特征值

linalg.eigvals()

返回A的特征值

linalg.eig(A)

返回A的特征值和特征向量,例如(eval, evec) = linalg.eig(A),其中eval的对角元为A的各个特征值,evec对应各列是相应特征向量。

>>> a = array([[-1,1,0],
[-4,3,0],
[ 1,0,2]])
>>> eval, evec = linalg.eig(a)
>>> eval
array([ 2.,  1.,  1.])
>>> evec
array([[ 0.        ,  0.40824829,  0.40824829],
[ 0.        ,  0.81649658,  0.81649658],
[ 1.        , -0.40824829, -0.40824829]])


即特征向量为λ1=2的(0,0,1)和λ2=λ3=1的(0.4,0.8,-0.4)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息