Posts Tagged ‘SciPy Learning’

  • NumPy学习笔记(二)

    Date: 2008.12.22 | Category: Programming Language | Response: 0

    nda­r­ray的几个常用属性:

    • shape: 代表一个array的形态,是一个向量还是一个矩阵,抑或是一个更复杂的向量组。
    • ndim: 代表这个array的维度
    • size: 在array中拥有的元素数量
    • ite­msize: 这个array中每一个元素所需要占的字节数
    • nbytes: 这个array的总字节数(=itemsize*size)
    • real: 代表一个array中所有元素的实数部分
    • imag: 同理,代表一个array中所有元素的虚数部分
    • flat: 将这个array整理成一维的,可以索引的一系列的元素组合。它实际上是通过iterator实现的,我们可以通过for x in array.flat来取得到所有的元素
    • T: 矩阵转置,同tran­spose()方法

    一些比较有用的方法:

    • tolist(): 将array转化成一个Python中的list对象
    • item(*args): 取得某一位置的元素
    • dump(file): 将这个对象序列化至文件。同cPickle中的dump作用
    • dumps(): 将序列化的结果通过字符串加以输出

    一些关于Array的形态操作:

    • reshape(): 改变array的形态
    • resize(): 也是改变array的形态。不同的是,resize是直接修改这个对象的,而reshape则会生成一个新的对象
    • tran­spose(): 这个就是矩阵的转置操作啦
    • swa­pa­xes(): 将n个维度中任意两个维度(坐标轴)进行调换
    • fla­tten(): 复制一个一维的array出来

    还有一些关于Array的运算操作:

    • max():取得所有元素中的最大值
    • min():取得最小值。还有一点值得说,就是max、min这些函数都可以针对某一坐标轴(具体维度)进行运算,例如array.max(axis=0),就在0坐标上求最大值
    • sum():求和
    • cumsum():求累计和
    • prod():求所有元素之积
    • cump­rod():求累计积
    • all():如果所有元素都为真,那么返回真;否则返回假
    • any():只要有一个元素为真则返回真
    • mean():求平均数

    总结了一部分,更多的方法还需要我们使用中体验。

    • Share/Bookmark
  • NumPy学习笔记(一)

    Date: 2008.12.17 | Category: Programming Language | Response: 0

    最近在学习scipy。在理解scipy之前,numpy作为scipy基本的模块之一,是不得不去理解掌握的。先总结一下numpy部分的内容吧。接下来学习scipy,最后是pylab和Matplotlib。

    介绍

    Numpy是一个Python的扩展模块,通过使用NumPy,我们可以进行科学计算。NumPy提供了矩阵、线性代数、傅里叶变换等的解决方法。

    NumPy包含:

    • N维矩阵对象
    • 线性代数运算功能
    • 傅里叶变换
    • For­t­ran代码集成的工具
    • C++代码集成的工具

    NumPy提供了两种基本的对象:ndarray(N-dimensional array object)和 ufunc(universal fun­ction object)。前者为一个n维的矩阵在Python中的存储对象,它是一类同类型的对象(如int、bool、unicode、str等等)的集合。

    下载

    为了使用NumPy,首先要有Python。然后下载NumPy的包,即可。

    使用

    安装好后,首先引入模块:

    »> from numpy import *

    创建一个矩阵

    »> a=array([[1,2,3],[4,5,6]])
    »> a.shape
    (2, 3)

    »> b=arange(15);print b
    [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]
    »> b.reshape(3,5)
    array([[ 0,  1,  2,  3,  4],
    [ 5,  6,  7,  8,  9],
    [10, 11, 12, 13, 14]])

    可以看到,A是2行3列的矩阵。通过arange方法,可以得到一个1维的数组。然后我们可以通过reshape方法改变它的维度。

    »> c=zeros((4,5));print c
    [[ 0.  0.  0.  0.  0.]
    [ 0.  0.  0.  0.  0.]
    [ 0.  0.  0.  0.  0.]
    [ 0.  0.  0.  0.  0.]]

    »> d=ones((5,7));print d
    [[ 1.  1.  1.  1.  1.  1.  1.]
    [ 1.  1.  1.  1.  1.  1.  1.]
    [ 1.  1.  1.  1.  1.  1.  1.]
    [ 1.  1.  1.  1.  1.  1.  1.]
    [ 1.  1.  1.  1.  1.  1.  1.]]

    »> e=add(c,arange(20).reshape(4,5))
    »> f=dot(e,d);print f
    [[ 10.  10.  10.  10.  10.  10.  10.]
    [ 35.  35.  35.  35.  35.  35.  35.]
    [ 60.  60.  60.  60.  60.  60.  60.]
    [ 85.  85.  85.  85.  85.  85.  85.]]

    使用zeros可以生成一个零矩阵。同理,用ones可以生成值全部为1的矩阵。我选择了一个4*5的矩阵e,和一个5*7的矩阵d做点乘。最后得到f矩阵。再举一个更加明显的例子:

    »> a=arange(5);print a
    [0 1 2 3 4]
    »> b=arange(5).reshape(5,1);print b
    [[0]
    [1]
    [2]
    [3]
    [4]]
    »> print dot(a,b)
    [30]

    点积的效果更加明显了。

    • Share/Bookmark

Paul’s Online Services

Dynamic Tag Cloud

Recent Posts

Recent Comments

Tags

2008.11.Trip-of-GuangXi ASP.net C++ China Chrome css dotNet FCGuoAn Firefox Football gmail IBM IE IIS IT Association Joke Microsoft music mysql NLP Nokia ntfs NumPy OpenSolaris open source Open Team php pidgin PKUSS Python Python Challenge qq Samba SciPy Learning shell solaris SQL SUN Thunderbird Travel web host Win 7 WordPress X11 zfs