首页 > 代码库 > 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]表示第一列向量
矩阵或向量运算,应该采用numpy
和scipy
,做法是:
| import math
import numpy as np
import scipy as sp
|
然后就可以进行运算了,比如加法、除以一个数:
| 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
来进行转换:
| 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中使用矩阵