Numpy
1.Numpy中伪随机数产生器seed
1 rng = numpy.random.RandomState(23355)
2 arrayA = rng.uniform(0,1,(2,3))
该段代码的目的是产生一个2行3列的assarray,其中的每个元素都是[0,1]区间的均匀分布的随机数
23355这个数字,其实,它是伪随机数产生器的种子,也就是“the starting point for a sequence of pseudorandom number”
对于某一个伪随机数发生器,只要该种子(seed)相同,产生的随机数序列就是相同的
2.Numpy矩阵
1 from numpy import *
2 #导入numpy所有库函数
3
4 data1=mat(zeros((3,3)));
5 #创建一个3*3的零矩阵,矩阵这里zeros函数的参数是一个tuple类型(3,3)
6 data2=mat(ones((2,4)));
7 #创建一个2*4的1矩阵,默认是浮点型的数据,如果需要时int类型,可以使用dtype=int
8 data3=mat(random.rand(2,2));
9 #这里的random模块使用的是numpy中的random模块,random.rand(2,2)创建的是一个二维数组,需要将其转换成#matrix
10 data4=mat(random.randint(10,size=(3,3)));
11 #生成一个3*3的0-10之间的随机整数矩阵,如果需要指定下界则可以多加一个参数
12 data5=mat(random.randint(2,8,size=(2,5));
13 #产生一个2-8之间的随机整数矩阵
14 data6=mat(eye(2,2,dtype=int));
15 #产生一个2*2的对角矩阵
16
17 a1=[1,2,3];
18 a2=mat(diag(a1));
19 #生成一个对角线为1、2、3的对角矩阵
3.矩阵相关运算
3.1矩阵相乘
1 a1=mat([1,2]);
2 a2=mat([[1],[2]]);
3 a3=a1*a2;
4 #1*2的矩阵乘以2*1的矩阵,得到1*1的矩阵
3.2矩阵点乘
1 #矩阵对应元素相乘
2 a1=mat([1,1]);
3 a2=mat([2,2]);
4 a3=multiply(a1,a2);
5
6 #矩阵点乘
7 a1=mat([2,2]);
8 a2=a1*2;
3.3矩阵求逆,转置
1 #矩阵求逆
2 a2=a1.I;
3
4 #矩阵转置
5 a2=a1.T;
3.4计算矩阵对应行列的最大、最小值、和
1 #计算每一列、行的和 2 a2=a1.sum(axis=0);#列和,这里得到的是1*2的矩阵 3 a3=a1.sum(axis=1);#行和,这里得到的是3*1的矩阵 4 a4=sum(a1[1,:]);#计算第一行所有列的和,这里得到的是一个数值 5 6 #计算最大、最小值和索引 7 a1.max();#计算a1矩阵中所有元素的最大值,这里得到的结果是一个数值 8 a2=max(a1[:,1]);#计算第二列的最大值,这里得到的是一个1*1的矩阵 9 a1[1,:].max();#计算第二行的最大值,这里得到的是一个一个数值 10 11 np.max(a1,0);#计算所有列的最大值,这里使用的是numpy中的max函数 12 np.max(a1,1);#计算所有行的最大值,这里得到是一个矩阵 13 14 np.argmax(a1,0);#计算所有列的最大值对应在该列中的索 15 np.argmax(a1[1,:]);#计算第二行中最大值对应在改行的索引
3.5矩阵的分隔和合并
1 #矩阵的分隔,同列表和数组的分隔一致 2 a=mat(ones((3,3))); 3 b=a[1:,1:];#分割出第二行以后的行和第二列以后的列的所有元素 4 5 #矩阵的合并 6 a=mat(ones((2,2))); 7 b=mat(eye(2)); 8 c=vstack((a,b));#按列合并,即增加行数 9 d=hstack((a,b));#按行合并,即行数不变,扩展列数
4.矩阵、列表、数组的转换
4.1 numpy中数组,同一个数组中所有元素必须为同一个类型,有几个常见的属性
1 a=array([[2],[1]]);
2 dimension=a.ndim;
3 m,n=a.shape;
4 number=a.size;//元素总个数
5 str=a.dtype;//元素的类型
4.2 矩阵数组之间的转换
1 a1=[[1,2],[3,2],[5,2]];//列表
2 a2=array(a1);//将列表转换成二维数组
3 a3=array(a1);//将列表转化成矩阵
4 a4=array(a3);//将矩阵转换成数组
5 a5=a3.tolist();//将矩阵转换成列表
6 a6=a2.tolist();//将数组转换成列表
4.3注意的是,当列表是一维的时候,将它转换成数组和矩阵后,再通过tolist()转换成列表是不相同的,需要做一些小小的修改
1 a1=[1,2,3];
2 a2=array(a1);
3 a3=mat(a1);
4 a4=a2.tolist();//这里得到的是[1,2,3]
5 a5=a3.tolist();//这里得到的是[[1,2,3]]
6 a6=(a4 == a5);//a6=False
7 a7=(a4 is a5[0]);//a7=True,a5[0]=[1,2,3]
5.获取矩阵中元素
1 val=dataMat[0,0];
6.矩阵添加行,列
7.矩阵删除行,列
8.矩阵交换两行
1 A[[i, j], :] = A[[j, i], :] # 实现了第i行与第j行的互换
参考资料:
http://blog.csdn.net/flying_sfeng/article/details/66478616
http://blog.csdn.net/taxueguilai1992/article/details/46581861
http://blog.csdn.net/accumulate_zhang/article/details/78452090