Numpy常用方法介绍

我们知道,在python中,是可以用list(列表)来保存一组值,作为数组来用。但是对于python的列表来说,列表中的元素可以是任意的对象,这就意味着,你在列表中保存的,实际上是指针,然后指针指向了你想保存的元素。如果进行数值运算的话,是比较浪费内存的。当然,python中存在array模块,但是,它是不支持多维运算的,也没有一些常用的运算函数,因此不适合做数值运算。

numpy的出现,弥补了python的这些不足。它提供了两种基本对象:ndarray(n-dimensional array object) 与 ufunc(universal function object).ndarray就是可以用来存储单一数据类型的多维数组,而ufunc则是对数组进行处理的函数。

一  ndarray对象的创建

ndarray对象的创建一般有如下几种形式:

1)直接创建。

例如np.array([1,2,3])  或者 c=np.array([2,4],[5,6],[8,10]),这样,就创建了一维或者多维的数组;

2)arange创建

arange([start,] stop[, step,], dtype=None)

其中stop是必选的,其他都是可选。start是起始值,所要输出值里包含该起始值,但是不包含stop结束值。dtype是指定要输出的数据类型,如果不指定的话,就会根据其他的类型进行判断。

例如:

 Examples
    --------
    >>> np.arange(3)
    array([0, 1, 2])
    >>> np.arange(3.0)
    array([ 0.,  1.,  2.])
    >>> np.arange(3,7)
    array([3, 4, 5, 6])
    >>> np.arange(3,7,2)
    array([3, 5])


3) linspace()创建

linspace(start, stop, num=50, endpoint=True, retstep=False)

start,stop跟array类似,num默认是50,endpoint为true时,stop是最后的一个值;当retstep为true时,会返回数组值和间距值。

例如:

 Examples
    --------
    >>> np.linspace(2.0, 3.0, num=5)
        array([ 2.  ,  2.25,  2.5 ,  2.75,  3.  ])
    >>> np.linspace(2.0, 3.0, num=5, endpoint=False)
        array([ 2. ,  2.2,  2.4,  2.6,  2.8])
    >>> np.linspace(2.0, 3.0, num=5, retstep=True)
        (array([ 2.  ,  2.25,  2.5 ,  2.75,  3.  ]), 0.25)


4)通过zeros(),ones(),empty()来创建

zeros()

zeros(shape, dtype=float, order='C')

shape:整数值,或者整数的序列值

类型dtype默认为float

order一般不用改。

Examples
    --------
    >>> np.zeros(5)
    array([ 0.,  0.,  0.,  0.,  0.])
    
    >>> np.zeros((5,), dtype=numpy.int)
    array([0, 0, 0, 0, 0])
    
    >>> np.zeros((2, 1))
    array([[ 0.],
           [ 0.]])
    
    >>> s = (2,2)
    >>> np.zeros(s)
    array([[ 0.,  0.],
           [ 0.,  0.]])

ones()

ones(shape, dtype=None, order='C')

与zeros()想类似

例子:

Examples
    --------
    >>> np.ones(5)
    array([ 1.,  1.,  1.,  1.,  1.])
    
    >>> np.ones((5,), dtype=np.int)
    array([1, 1, 1, 1, 1])
    
    >>> np.ones((2, 1))
    array([[ 1.],
           [ 1.]])
    
    >>> s = (2,2)
    >>> np.ones(s)
    array([[ 1.,  1.],
           [ 1.,  1.]])

empty()

empty(shape, dtype=float, order='C')

与zeros()相类似

np.empty([2, 2])


此外,还有ones_like,ones_like等,用来完全的复制原先的数组。从函数名称就可以猜出其作用来。

5)eyes()

eye(N, M=None, k=0, dtype=<type 'float'>)

功能是给出一个二维数组,二维数组的对角线是1,其余都是0.

其中,N是行数,M是列数。M在默认的情况下可以忽略,默认值是N。k默认是0,标志着最正对的对角线是0。当k>0的时候,就上移,当k<0时,就可以下移。dtype就是可以设置数值类型。

例如

Examples
    --------
    >>> np.eye(2, dtype=int)
    array([[1, 0],
           [0, 1]])
    >>> np.eye(3, k=1)
    array([[ 0.,  1.,  0.],
           [ 0.,  0.,  1.],
           [ 0.,  0.,  0.]])



二 numpy中数组的一些属性以及取值的方法

1)ndarray的属性

shape函数

shape函数用来计算数组的各个值的长度,返回值是一个元组。

形状的计算从第一维开始计算,知道最后一个维度位置。

例如

np.shape([0]) 只有一个维度,因此值是
    (1,)
np.shape([[1, 2]])有两个维度,因此,值是
(1, 2)

shape计算出了数组的属性,而通过reshape可以来改变这个属性

2)存取元素

通过切片[]来存取数组,是最常见的对数组的操作方式。(切片包含开始值,但是不包含结束值)

当数组有多维时,需要在每个维度上选取值,每个维度间用逗号来进行分割。当某个维度没有选择时,默认选择所有值。

例如:

a=array([[2,3,4,5],[5,6,7,8],[6,4,2,4]])
>>> a
array([[2, 3, 4, 5],
       [5, 6, 7, 8],
       [6, 4, 2, 4]])
a[0:2] 只选择第一个维度的前两个,第二个维度全选
array([[2, 3, 4, 5],
       [5, 6, 7, 8]])

a[0:2,1:3] 选择第一个维度的0,1,第二个维度的1,2
array([[3, 4],
       [6, 7]])






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值