首页 > 代码库 > Numpy中使用矩阵

Numpy中使用矩阵

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

Numpy是Python中的一个矩阵计算包,功能类似于MATLAB的矩阵计算。

具体参见http://www.numpy.org/。安装Pythonxy时已经包含了numpy包及其依赖包。


(1) 定义矩阵

>>> from numpy import *

>>> a = array([[1,2.2,3],[4,5,6]])

>>> a.ndim

2

>>> a.shape

(2,3)

>>> a.size

6

>>> type(a)

<type numpy.ndarray>

>>>a.dtype

dtype(‘float64‘)

 

(2) 矩阵大小转换(reshape)

>>>a.reshape(6,1)  -- 将3x2矩阵变成列向量(6x1),需要注意的是,这里与MATLAB不一样,MATLAB变换是按列向量来的,而NUMPY是基于行向量

所以numpy的运行结果为:1 4 2.2 5 3 6 (列向量)

而MATLAB的运行结果为 :  1 2.2 3 4 5 6 (列向量)

注意: 对应的MATLAB很多向量默认为列向量,numpy中默认为行向量

 

(3) 矩阵基本运算

+ , - , *(元素乘法), dot(矩阵乘法), *= , += , -= , **(元素乘方),<, >, ...sin,exp, ...

注意:与MATLAB不同,MATLAB中*是矩阵乘法,.*是元素乘法;


(4)特殊的函数

     ones([...]): 全一的矩阵, 如ones([3,4])会产生全1的3x4阶矩阵;

     zeros([....]): 全0的矩阵;

     linspace(start, end, num): 如linspace(0,1,11)结果为[0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1];

     arange(n): 产生一个从0到n-1的向量,如arange(4)结果为[0,1,2,3]

     random.random([...]): 产生随机矩阵,如random.random([2,3])产生一个2x3维的随机数

 

(5) 矩阵成员

     a.max(): 返回矩阵的最大值

     a.min(): 返回矩阵最小值

     a.sum(): 求和

     a.mean(): 求均值

     a.max(axis): 0-按列求值,返回一行, 1-按行求值,返回一列

     a.transpose(): 转置

 

(6) 矩阵访问:

   对于一维矩阵,a[0]表示a向量的第1个元素;

   对于二维矩阵,a[0,0]表示a的第1个元素,a[0,:]表示a的第一行向量,a[:,0]表示第一列向量



矩阵或向量运算,应该采用numpyscipy,做法是:

1
2
3
import math
import numpy as np
import scipy as sp

然后就可以进行运算了,比如加法、除以一个数:

1
2
3
npdata=np.array(data)
data_sum=np.add(npdata,npdata)
data_frac=np.true_divide(npdata,2)

也可以按列合并矩阵(要求两矩阵行数一样):

new_matrix=np.hstack([mat1,mat2])

或按行合并矩阵(要求两矩阵列数一样):

new_matrix=np.vstack([mat1,mat2])

合并矩阵的命令同样可以用于合并向量,但是合并向量的时候有时会提示行列数不对,那可能是因为一个的维度是(n个),而另一个的维度是(n列,1行),这种情况下,可用reshape来进行转换:

1
2
array2=array2.reshape(n)
new_array=np.hstack([array1,array2])

查看矩阵或向量维度的办法是:

xxx.shape

对于一个矩阵,若按其第一列元素大小顺序来对整个矩阵进行行排序,则执行:

mat1=mat1[mat1[:,0].argsort()]

在屏幕上输出数组:

print mat1

保存一个矩阵到文件:

np.savetxt(输出文件名,矩阵名)



from:

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

ref:

Theano学习二----numpy

Python学习笔记1


Numpy中使用矩阵