NumPy 模块 常用方法 学习
2015-02-07 19:13
471 查看
NumPy的详细教程
import numpy as np
1. 多维数组:类型 numpy.ndarray
方法:numpy.array(tuple[,dtype]): # tuple 可以是由 tuple 组成的;dtype 可以取 numpy.int32/.int16/.float64 对 tuple 的元素指定类型。 返回ndarray类型对象。
>>> np.array([1.2,2,3,4],dtype = np.int32) array([1, 2, 3, 4])numpy.arange(num): # 返回一个 包含 0~num-1 num个元素的 int型一维数组。
ndarray.resharp(num1,num2): #将一维数组分解成包含 num1 个一维数组的二维数组 ,每个部分包含 num2 个元素。其中num1*num2 === num(元素总数)。
</pre><pre name="code" class="python">>>> print np.arange(15).reshape(3,5) [[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14]]numpy.linspace(n1,n2,i): #从 [n1,n2]中等距的找出 i 个数组成数组
>>> print np.linspace(1,3,9) [ 1. 1.25 1.5 1.75 2. 2.25 2.5 2.75 3. ]numpy.zeros,numpy.ones,numpy.eye #等方法可以构造特定的矩阵
>>> print np.zeros((3,4)) [[ 0. 0. 0. 0.] [ 0. 0. 0. 0.] [ 0. 0. 0. 0.]] >>> >>> print np.ones((3,4)) [[ 1. 1. 1. 1.] [ 1. 1. 1. 1.] [ 1. 1. 1. 1.]] >>> >>> print np.eye(3) [[ 1. 0. 0.] [ 0. 1. 0.] [ 0. 0. 1.]]
创建一个三维数组:
>>> print np.zeros((3,4,5)) [[[ 0. 0. 0. 0. 0.] [ 0. 0. 0. 0. 0.] [ 0. 0. 0. 0. 0.] [ 0. 0. 0. 0. 0.]] [[ 0. 0. 0. 0. 0.] [ 0. 0. 0. 0. 0.] [ 0. 0. 0. 0. 0.] [ 0. 0. 0. 0. 0.]] [[ 0. 0. 0. 0. 0.] [ 0. 0. 0. 0. 0.] [ 0. 0. 0. 0. 0.] [ 0. 0. 0. 0. 0.]]]
>>> a = np.zeros((3,4,5)) >>> a array([[[ 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0.]], [[ 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0.]], [[ 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0.]]])print a.ndim #数组的维数
>>> print a.ndim 3print a.shape #数组每一维的大小
>>> print a.shape (3L, 4L, 5L)print a.size #数组的元素数
>>> print a.size 60print a.dtype #元素类型
>>> print a.dtype float64a.itemsize #每个元素所占的字节数
>>> print a.itemsize 8
2.数组索引,切片,赋值: #也可以使用C中的下标
>>> a = np.array( [[2,3,4],[5,6,7]] ) >>> print a [[2 3 4] [5 6 7]]
a[m,n]索引
>>> a[1][2] 7 >>> a[1,2] 7
a:b 表示[a+1,b]间的所有元素
>>> a[1,:] array([5, 6, 7]) >>> a[1,] array([5, 6, 7]) >>> a[1] array([5, 6, 7]) >>> a[1][:] array([5, 6, 7])
>>> a[1,1:2] array([6]) >>> a[1][1:2] array([6])
>>> a[1,:] = [8,9,10] >>> a array([[ 2, 3, 4], [ 8, 9, 10]]) >>> a[1][:] = [1,1,1] >>> a array([[2, 3, 4], [1, 1, 1]]) >>> a[1,:] = [8,9,10,11] >>> a ValueError: cannot copy sequence with size 4 to array axis with dimension 3
3.使用for操作元素:
>>> for x in a: ... print x ... [2 3 4] [1 1 1]
4.四则运算中位置对应的元素进行运算
#参与运算的矩阵必须有一样的形式
>>> a = np.ones((2,2)) >>> b = np.eye(2) >>> print a [[ 1. 1.] [ 1. 1.]] >>> >>> print b [[ 1. 0.] [ 0. 1.]] >>> >>> print a > 2 [[False False] [False False]] >>> >>> print a+b [[ 2. 1.] [ 1. 2.]] >>> >>> print a-b [[ 0. 1.] [ 1. 0.]] >>> >>> print b*2 [[ 2. 0.] [ 0. 2.]] >>> >>> print (a*2)*(b*2) [[ 4. 0.] [ 0. 4.]] >>> >>> print b/(a*2) [[ 0.5 0. ] [ 0. 0.5]] >>> >>> print (a*2)**4 [[ 16. 16.] [ 16. 16.]]
5.ndarray对象的方法:
>>> a = np.array([[1,2],[3,4],[5,6]]) >>> a array([[1, 2], [3, 4], [5, 6]]) >>> a.sum() 21 >>> a.sum(axis=0) #计算每一列的元素和 array([ 9, 12]) >>> a.sum(axis=1) #计算每一行的元素和 array([ 3, 7, 11]) >>> a.min() 1 >>> a.max() 6
6.numpy的方法:
>>> a = np.array([[1,2],[3,4],[5,6]]) >>> a array([[1, 2], [3, 4], [5, 6]]) >>> np.sin(a) #求sin(x) array([[ 0.84147098, 0.90929743], [ 0.14112001, -0.7568025 ], [-0.95892427, -0.2794155 ]]) >>> np.sin(1/2) 0.0 >>> np.max(a) 6 >>> np.floor(a) #对每个元素向下取整 array([[ 1., 2.], [ 3., 4.], [ 5., 6.]]) >>> np.floor(3.7) 3.0 >>> np.exp(a) #求ln(x) array([[ 2.71828183, 7.3890561 ], [ 20.08553692, 54.59815003], [ 148.4131591 , 403.42879349]]) >>> np.exp(0) 1.0 >>> np.dot(a,a.transpose()) #进行矩阵的乘法 array([[ 5, 11, 17], [11, 25, 39], [17, 39, 61]])
合并数组
>>> a = np.ones((2,2)) >>> b = np.eye(2) >>> a array([[ 1., 1.], [ 1., 1.]]) >>> b array([[ 1., 0.], [ 0., 1.]])
>>> np.vstack((a,b)).shape (4L, 2L) >>> np.hstack((a,b)).shape (2L, 4L) >>> np.vstack((a,b)) #将两个等列的矩阵合并。 array([[ 1., 1.], [ 1., 1.], [ 1., 0.], [ 0., 1.]]) >>> np.hstack((a,b)) #两个等行的矩阵,将后一个的每一行接到第一个的后面。 array([[ 1., 1., 1., 0.], [ 1., 1., 0., 1.]])
7.浅拷贝和深拷贝:
>>> c = np.hstack((a,b)) >>> c array([[ 1., 1., 1., 0.], [ 1., 1., 0., 1.]])
浅拷贝
>>> a[1,1] = 5 >>> b[1,1] = 5 >>> c array([[ 1., 1., 1., 0.], [ 1., 1., 0., 1.]])
>>> a = np.ones((2,2)) >>> b = a #为a建立新的引用b,b是a的别称 >>> a array([[ 1., 1.], [ 1., 1.]]) >>> b array([[ 1., 1.], [ 1., 1.]]) >>> a is b >>> True
深拷贝
>>> c = a.copy() #创建了新的对象c,对c的操作和a无关 >>> c array([[ 1., 1.], [ 1., 1.]]) >>> a is c False
8.矩阵的运算:
转置:
>>> a = a7cf np.array([[1,0],[2,3]]) >>> a array([[1, 0], [2, 3]]) >>> >>> a.transpose() array([[1, 2], [0, 3]])
迹:
>>> a = np.array([[1,2,3,4],[2,3,4,5]]) >>> a array([[1, 2, 3, 4], [2, 3, 4, 5]]) >>> a.trace() 4
9.numpy.linalg模块中有很多关于矩阵运算的方法:
import numpy.linalg as nplg
特征值、特征向量:
nplg.eig(a)
>>> for x in nplg.eig(a): ... print x ... [ 3. 1.] [[ 0. 0.70710678] [ 1. -0.70710678]]
===================================================================================================================
相关文章推荐
- python学习——python os.path模块常用方法详解
- python学习(一)----os模块中常用方法总结
- python学习――模块和模块的常用方法
- numpy学习笔记三:numpy文件读写与常用统计方法
- numpy模块常用方法
- Python学习——os模块中几个常用的方法
- jQuery 学习 几种常用方法
- 学习.NET (8) 实现派生类中Deep Copy的几种常用方法(通过ICloneable接口)
- ASP.Net学习之常用模块整理(2)
- 工作之余,整理了一下平时处理数据的一些常用的,简单的方法。希望对学习JAVA的朋友有点帮助
- 2009-04-09技术学习:wicket常用控件使用方法
- ASP.Net学习之常用模块整理(2)
- ASP.NET中常用的26个优化性能方法---使请求管线内的所有模块尽可能高效
- ASP.Net学习之常用模块整理(1)
- SQL学习和积累(一些不常用确很有用的方法)
- LINUX驱动学习:加载模块时出现Device or resource busy的解决方法
- ASP.Net学习之常用模块整理(1)
- ASP.Net学习之常用模块整理(1)
- ASP.Net学习之常用模块整理
- jsp常用功能模块-JSP实例学习教程