NumPy学习笔记(一)

最近在学习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 impo­rt *

创建一个矩阵

»> 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]

点积的效果更加明显了。

You may also like...

1 Response

  1. Anonymous says:

    你好,我在SUSE下安装numpy的rpm过程中提示
    lapa­ck is nee­ded by python-numpy-1.3.0–9.1.x86_64
    blas is nee­ded by python-numpy-1.3.0–9.1.x86_64
    而我的/usr/lib64中已经有liblapack.so.3和libblas.so.3,请问我在安装numpy过程中是要重新lapack和blas吗?如果不需要,如何调用呢?

    非常感谢!

Leave a Reply

Your email address will not be published.

five + 3 =

使用新浪微博登陆