Python科学计算库NumPy基础操作

NumPy是什么?能吃吗?好吃吗?

。。。吃货总是把问题想的这么简单。。。

来看看NumPy在官网上是怎么定义自己的吧。。

NumPy is the fundamental package for scientific computing with Python. It contains among other things:

    1.a powerful N-dimensional array object
    2.sophisticated (broadcasting) functions
    3.tools for integrating C/C++ and Fortran code
    4.useful linear algebra, Fourier transform, and random number capabilities


Besides its obvious scientific uses, NumPy can also be used as an efficient multi-dimensional container of generic data. Arbitrary data-types can be defined. This allows NumPy to seamlessly and speedily integrate with a wide variety of databases.

看到了把,翻译成中文就是在数据处理方面屌得很。。


下面来看看具体的基本操作吧:

1.导入NumpPy这个库(安装的话,在之前的blog中已经介绍过啦),并将其简写方便使用:


[python] view plain copy
  1. import numpy as np  


2.Python自定义的数组并不是严格意义上的矩阵,我们可以使用np将其转换成np自己的矩阵类型


[python] view plain copy
  1. array00 = np.array([[1,2,3],[4,5,6]])  
  2. print(array00)  


Python科学计算库NumPy基础操作

3.查看矩阵的维数,矩阵的形式,矩阵中元素的个数


[python] view plain copy
  1. print 'number of dim:',array00.ndim  
  2. print 'shape:',array00.shape  
  3. print 'size',array00.size  


Python科学计算库NumPy基础操作

4.设置输出类型


[python] view plain copy
  1. array01 = np.array([1,2,3],dtype=np.int)  
  2. print(array01.dtype)  

Python科学计算库NumPy基础操作


5.初始化N*M的元素为0的矩阵


[python] view plain copy
  1. array01 = np.array([1,2,3],dtype=np.int)  
  2. print(array01.dtype)  


Python科学计算库NumPy基础操作

6.初始化N*M的元素为1的矩阵


[python] view plain copy
  1. array03 = np.ones((4,5))  
  2. print array03  

Python科学计算库NumPy基础操作


7.初始化N*M的元素为空的矩阵


[python] view plain copy
  1. array04 = np.empty((4,5))  
  2. print array04  

Python科学计算库NumPy基础操作


8.生成一个1到10步长为2的矩阵


[python] view plain copy
  1. array05 = np.arange(1,10,2)  
  2. print array05  

Python科学计算库NumPy基础操作


9.生成一个具有12个元素,shape为N*M的矩阵


[python] view plain copy
  1. array06 = np.arange(12).reshape((3,4))  
  2. print array06  

Python科学计算库NumPy基础操作


10.生成一个1到20 被cut为12段的一个线性矩阵


[python] view plain copy
  1. array07 = np.linspace(1,20,12)  
  2. print array07  
  3. print  
  4. array07 = np.linspace(1,20,12).reshape((3,4))  
  5. print array07  


Python科学计算库NumPy基础操作

11.关于矩阵的一些处理


[python] view plain copy
  1. #初始化两个1*4矩阵  
  2. array08 = np.array([4,5,6,7])  
  3. array09 = np.arange(4)  
  4.   
  5. #矩阵减法  
  6. print array08,array09  
  7. array10 = array08 - array09  
  8. print array10  
  9.   
  10. #矩阵加法  
  11. print array08,array09  
  12. array10 = array08 + array09  
  13. print array10  
  14.   
  15. #矩阵元素平方  
  16. print array08  
  17. array10 = array08 ** 2  
  18. print array10  
  19.   
  20. #矩阵求sin  
  21. print array08  
  22. array10 = np.sin(array08)  
  23. print array10  
  24.   
  25. #矩阵元素是否大于5  
  26. print array08  
  27. array10 = array08 > 5  
  28. print array10  
  29.   
  30. #矩阵元素是否等于5  
  31. print array08  
  32. array10 = array08 == 5  
  33. print array10  

Python科学计算库NumPy基础操作


12.矩阵中元素相乘和矩阵乘法


[python] view plain copy
  1. #初始化两个2*2矩阵  
  2. array11 = np.array([[1,1],[0,1]])  
  3. array12 = np.arange(4).reshape((2,2))  
  4. print array11  
  5. print  
  6. print array12  
  7. print  
  8. #矩阵中每个元素相乘  
  9. array13 = array11 * array12  
  10. #矩阵乘法  
  11. array14 = np.dot(array11,array12)  
  12. array14 = array11.dot(array12)  
  13.   
  14. print array13  
  15. print  
  16. print array14  


Python科学计算库NumPy基础操作

13.随机生成矩阵


[python] view plain copy
  1. array15 = np.random.random((4,4))  
  2. print array15  
  3. print  
  4. array15_1 = np.random.randint(1,100,10)  
  5. print array15_1  

Python科学计算库NumPy基础操作


14.关于矩阵的一个些操作


[python] view plain copy
  1. #随机生成矩阵  
  2. array15 = np.random.random((4,4))  
  3. print array15  
  4.   
  5. array15_1 = np.random.randint(1,100,10)  
  6. print array15_1  
  7.   
  8. #方差  
  9. print np.var(array15_1)  
  10. print  
  11. #矩阵求和  
  12. print np.sum(array15)  
  13. #求出矩阵中最小元素  
  14. print np.min(array15)  
  15. #求出矩阵中最大元素  
  16. print np.max(array15)  
  17. #矩阵行求和  
  18. print np.sum(array15,axis=0)  
  19. #求出每行最小元素  
  20. print np.min(array15,axis=0)  
  21. #求出每行最大元素  
  22. print np.max(array15,axis=0)  
  23. print  
  24.   
  25. #列求和  
  26. print np.sum(array15,axis=1)  
  27. #求出每列最小元素  
  28. print np.min(array15,axis=1)  
  29. #求出每列最大元素  
  30. print np.max(array15,axis=1)  

Python科学计算库NumPy基础操作


15.关于矩阵索引的一些操作和其他操作


[python] view plain copy
  1. array16 = np.arange(1,13).reshape((3,4))  
  2. print array16  
  3.   
  4. #求矩阵最小值索引  
  5. print np.argmin(array16)  
  6. #求矩阵最大值索引  
  7. print np.argmax(array16)  
  8. #求矩阵平均值  
  9. print np.mean(array16)  
  10. print np.average(array16)  
  11. #求矩阵行平均值  
  12. print np.mean(array16,axis=0)  
  13. #求矩阵列平均值  
  14. print np.mean(array16,axis=1)  
  15.   
  16. #求矩阵中位数  
  17. print np.median(array16)  
  18. #矩阵元素累加  
  19. print np.cumsum(array16)  
  20. #矩阵相邻元素累差  
  21. print np.diff(array16)  

Python科学计算库NumPy基础操作


16.元素的非零判别


[python] view plain copy
  1. array17 = np.array([[1,2,3],[3,0,4],[0,2,2]])  
  2.   
  3. print np.nonzero(array17)  

Python科学计算库NumPy基础操作


17.矩阵排序


[python] view plain copy
  1. array18 = np.array([[4,2,3],[3,0,4],[0,5,2]])  
  2. #矩阵行排序  
  3. print np.sort(array18)  


Python科学计算库NumPy基础操作

18.矩阵转置以及矩阵内元素的范围控制


[python] view plain copy
  1. array19 = np.arange(20).reshape(4,5)  
  2. print array19  
  3. print  
  4.   
  5. #矩阵转置  
  6. print array19.T  
  7. print np.transpose(array19)  
  8. print  
  9. #矩阵中小于4用4替代,大于8用8替代  
  10. print np.clip(array19,4,8)  

Python科学计算库NumPy基础操作


19.对矩阵的一些控制输出


[python] view plain copy
  1. array21 = np.arange(3,15).reshape(3,4)  
  2. print array21  
  3. print  
  4. print (array21[2])  
  5. print  
  6. print array21[1][1]  
  7.   
  8. print array21[1,1]  
  9. print array21[1,1:]  
  10. print  
  11.   
  12. #打印每一行  
  13. for row in array21:  
  14. print row  
  15.   
  16. print  
  17.   
  18. #打印每一列  
  19. for column in array21.T:  
  20. print column  
  21. print  
  22.   
  23. #折叠成一个一维数组  
  24. print (array21.flatten())  
  25. print  
  26.   
  27. #打印数组中的每一个元素  
  28. for item in array21.flat:  
  29. print item  


Python科学计算库NumPy基础操作


20.矩阵的分割


[python] view plain copy
  1. array22 = np.arange(16).reshape(4,4)  
  2. print array22  
  3. print  
  4.   
  5.   
  6. #每两行分割  
  7. print np.split(array22,2,axis=0)  
  8. print  
  9.   
  10.   
  11. #每两列分割  
  12. print np.split(array22,2,axis=1)  
  13. print  
  14.   
  15. #不等分割  
  16. print np.array_split(array22,3,axis=1)  
  17. print  
  18.   
  19. #横向分割  
  20. print np.vsplit(array22,2)  
  21. print  
  22.   
  23. #纵向分割  
  24. print np.hsplit(array22,2)  


Python科学计算库NumPy基础操作

21.矩阵拷贝


[python] view plain copy
  1. array23 = np.arange(4)  
  2. array24 = array23  
  3.   
  4. print array23  
  5. print array24  
  6.   
  7. #浅拷贝  
  8. print array23 is array24  
  9. array23[2] = 14  
  10. print  
  11. print array23  
  12. print array24  
  13. print  
  14.   
  15.   
  16. #深拷贝  
  17. array25 = array23.copy()  
  18.   
  19. print array23  
  20. print array25  
  21.   
  22. print array23 is array25  
  23. array23[2] = 99  
  24. print  
  25. print array23  
  26. print array25  


Python科学计算库NumPy基础操作


22.矩阵合并


[python] view plain copy
  1. array26 = np.array([1,1,1])  
  2. array27 = np.array([2,2,2])  
  3.   
  4. #横向合并  
  5. print np.vstack((array26,array27))  
  6. print  
  7.   
  8. #纵向合并  
  9. print np.hstack((array26,array27))  
  10.   
  11. 列表变矩阵  
  12. print array26[np.newaxis,:]  
  13. print array26[np.newaxis,:].shape  
  14. print  
  15. print array26[:,np.newaxis]  
  16. print array26[:,np.newaxis].shape  
  17.   
  18. array28 = array26[:,np.newaxis]  
  19. array29 = array27[:,np.newaxis]  
  20. print  
  21. print np.vstack((array28,array29))  
  22. print  
  23. print np.hstack((array28,array29))  
  24.   
  25. #多矩阵合并  
  26. print  
  27. print np.concatenate((array28,array29,array29,array28),axis=0)  
  28. print  
  29. print np.concatenate((array28,array29,array29,array28),axis=1)  

Python科学计算库NumPy基础操作


好啦就到这里吧,感觉是不是很像matlab,NumPy对矩阵的处理确实很强大!