Python和numby学习笔记

来源:互联网 发布:java程序设计实验指导 编辑:程序博客网 时间:2024/05/03 20:00

NumPy学习报告

一:Numpy的个人理解和其在windows上的安装

       个人理解numpy有点类似于C++中的STL,只不过STL更偏向于数据结构,而numpy偏向于计算。

       目前我只在windows上安装了numpy,Python版本是2.7,我在网上下载了对应于Python2.7版本的numpy-1.7.0-win32-superpack-python2.7.exe。安装也比较傻瓜,一路直接next。

二:如何使用numpy以及numpy的array用法

       在Python中,如果我们使用numpy的时候,我们需要导入numpy,可以使用imprt numpy,但是一般最好使用import numpy asnp

       定义array:

                            A=np.array([1,2,3,4],float)

Array函数有两个参数,第一个是一个list,第二个是array中元素的类型。

                            我们可以使用函数 type(A)来得到A的类型,返回应该是array。

      

                     多维的Array定义只需将array中的参数修改为多维的list。例子如下:

      

       另外,我们还有其他定义array的方式:

       主要是以下几个函数

l  Arrange 顺序生成

l  Zeros  生成的元素都是0

l  Ones   生成的元素都是1

l  Zeros_like 参数为一个array,生成的维度和参数的一样,只是数据为0

l  Ones_like 同上,只是数据为1

       此外我们需要记住以下几个针对array比较常用的函数和属性:

      

函数/属性

作用描述

Shape

returns a tuple with the size of each array dimension

A=np.array([[1,2],[3,4]],float)

A.shape : (2,2)

reshape

creates a new array and does not itself modify the original array

利用参数中的数据构造对应维数的array

 

transpose

create a new array with the final two axes switched

对于二维的array,相当于转置了一下。

concatenates

将两个或者多个array连接,该函数有两个参数,第一个为array构成的元组,第二个针对多维度的,选择哪一个连接。

三:Python slice

Slice这一部分,比较主要,也比较混淆。在看了http://stackoverflow.com/questions/509211/pythons-slice-notation这一部分之后比较清楚。我个人还是觉得这一部分应该清楚的了解,在使用的时候查查确保正确,没必要纠结于某一方面。以下是我在上述网址中剪切的图片,比较有学习价值。

四:numpy Broadcasting

       Numpy中array基本运算如下:

 

上述的图片基本反映array正常的四则运算和指数运算。我们需要注意上式中是两个相同的array之间的运算或者是array和一个数值之间的运算。

       如果两个array之间的维度不同,则broadcast,参考:http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html。

       其实我个人觉得有个例子能更好的反映broadcast(参考上述链接):

五:array的迭代和一些统计计算

我们先来总结array的迭代:

      

上图参考http://www.engr.ucsb.edu/~shell/che210d/numpy.pdf 这个链接,我们截个图。这个我觉得应该一目了然。

统计计算:

Array的和,积,平均值,方差和标准差。

       对于多维计算,我们总结要先确定axis,从以下图片中,我们能够清楚看出结果:

      

六:向量和矩阵运算

       个人觉得这一节才是numpy中的重点。先介绍几个概念:

       点积(内积)   首先要明白向量的点积之后是个数值。矩阵的点积就是矩阵的乘法。在此我们需要清楚。

向量积(交叉积) 向量积结果是个向量。如下图:

 

       点积:

      

 

向量积

其中的outer为:a的转置和b的点积。Inner就是点积,cross及交叉积就是向量积。

 

矩阵的行列式值从如下的例子就能看出:

      

其中linalgnumpy中的一个子模块。

矩阵的特征值和特征向量求解如下:

矩阵的逆:

奇异值分解:

      

       

0 0
原创粉丝点击