Numpy基础笔记---Array 和matrix(2)
2017-08-28 16:53
232 查看
一、关于Numpy
Numpy是Python第一个矩阵类型,提供了大量矩阵处理的函数。非正式地来说,它是一个使运算更easy,执行速度更快的库,因为它的内部运算是通过C语言实现的。 numpy包含了两种基本的数据类型:矩阵和数组。在使用标准的python时,处理这两种数据类型都需要循环,而在numpy中则可以省略这些语句。二、简单使用数组Array
处理数组的一些例子:>>> from numpy import array >>> mm = array((1,1,1)) >>> nn = array((1,2,3)) >>> mm + nn array([2, 3, 4])而如果只用Python常规处理的话,上述过程则必须使用for循环。对每个元素乘以2:
>>> mm * 2 array([2, 2, 2])对每个元素平方:
>>> nn ** 2 array([1, 4, 9])可以像访问列表易于访问数组里的元素:
>>> nn[1] 2Numpy也支持多维数组:
>>> jj = array([[1,2,3],[1,1,1]]) >>> jj array([[1, 2, 3], [1, 1, 1]])多维数组中的元素也可以像列表一样访问:
>>> jj[0] array([1, 2, 3]) >>> jj[0][1] 2也可以用矩阵方式访问:
>>> jj[0,1] 2当把两个数组乘起来的时候,两个数组的元素将对应相乘:
>>> a1 = array([1,2,3]) >>> a2 = array([3,4,5]) >>> a1 * a2 array([ 3, 8, 15])
三、简单使用矩阵matrix
导入:>>> from numpy import mat,matrix关键字mat是matrix的缩写。
>>> ss = mat([1,2,3]) >>> ss matrix([[1, 2, 3]]) >>> mm = matrix([1,2,3]) >>> mm matrix([[1, 2, 3]])可以访问矩阵中的单个元素:
>>> mm[0,1] # 0代表第0行 2可以把Python列表转成Numpy矩阵:
>>> pyList = [5,11,13] >>> mat(pyList) matrix([[ 5, 11, 13]])试试上面两个矩阵相乘:
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Python27\lib\site-packages\numpy\matrixlib\defmatrix.py", line 343, in __mul__ return N.dot(self, asmatrix(other)) ValueError: shapes (1,3) and (1,3) not aligned: 3 (dim 1) != 1 (dim 0)可以看到,矩阵数据类型的运算会强制执行数学中的矩阵运算。矩阵相乘的必要条件是左边矩阵的列数和右边矩阵的行数必须相等。这时候需要将其中的一个矩阵转置,numpy数据类型中有一个转置的方法:
>>> mm * ss.T matrix([[14]])这样就调用了.T完成了对ss的转置。知道矩阵的大小有助于上述错误的调试,可以通过numpy中的shape方法来查看矩阵或者数组的维数:
>>> from numpy import shape >>> shape(mm) (1, 3)如果需要把矩阵mm的每个元素和矩阵ss的每个元素对应相乘应该怎么办呢?这就是所谓的元素相乘法,可以使用Numpy的multiply方法:
>>> from numpy import multiply >>> multiply(mm,ss) matrix([[1, 4, 9]])此外,矩阵和数组还有很多有用的方法,如排序:
>>> mm.sort() >>> mm matrix([[1, 2, 3]])这种排序方法是原地排序(即排序后的结果占用原始的数据空间),所以如果希望保留数据的原序,则必须事先做一份拷贝。也可以用argsort()方法得到矩阵中每个元素的排序序号:
>>> dd = mat([4,5,1]) >>> dd.argsort() matrix([[2, 0, 1]])可以计算矩阵的均值:
>>> dd.mean() 3.3333333333333335再回顾下多维数组:
>>> jj = mat([[1,2,3],[8,8,8]]) >>> jj matrix([[1, 2, 3], [8, 8, 8]]) >>> shape(jj) (2, 3)这是一个2行3列的数组,如果想取出其中一行的元素,可以使用冒号(:)操作符和行号来完成。
例如,要取出第一行元素,应该输入:
>>> jj[1:] matrix([[8, 8, 8]]) >>> jj[1,0:3] matrix([[8, 8, 8]])还可以指定要取出元素的范围。如果想要取出第一行第0列和第1列的元素,可以使用下面的语句:
>>> jj[1,0:2] matrix([[8, 8]])这种索引方式能够简化numpy的编程。在数组和矩阵数据类型之外,Numpy还提供了其他有用的方法。建议浏览完整的官方文档 : http://docs.scipy.org/doc/
相关文章推荐
- python学习笔记(三)- numpy基础:array及matrix详解
- numpy中的matrix与array的区别
- Python Numpy的数组array和矩阵matrix的用法与区别
- Numpy基础笔记(包括基础函数使用)
- numpy学习笔记1-基础
- Numpy基础学习笔记
- Python Numpy的数组array和矩阵matrix
- theano.Tensor.lmatrix ,numpy.array , list 为空的判断方法
- Numpy基础笔记
- NumPy之Array和Matrix
- numpy中matrix 和 array的区别
- numpy中的matrix和array
- Java 基础一些代码练习笔记(Array数组)
- python numpy:1 numpy.array和numpy.matrix常用函数使用
- Numpy基础笔记(1)
- Numpy 基础学习笔记
- 【LaTeX】Lyx/LaTeX笔记03——用blkarray代替\bordermatrix为矩阵生成行标列标
- numpy 基础学习笔记(1)
- [笔记]NumPy基础操作
- numpy 基础学习笔记(2)