numpy快速入门教程

来源:互联网 发布:欧洲人怎么看中国知乎 编辑:程序博客网 时间:2024/05/21 09:43

numpy如果使用python做过机器学习或者科学计算方面项目的朋友并陌生,它是一个非常好用的python科学计算库,而且numpy是用c实现的,效率也非常高。这篇博客译自斯坦福大学python快速入门教程的numpy快速入门教程,除此之外我还添加了一些自己的见解。

一、numpy创建数组

import numpy as np#numpy数组创建if __name__ == "__main__":    #通过Python的列表来初始化数组    a = np.array([1,2,3])    print(a)  #[1 2 3]    #获取数组的类型    print(type(a))  #<class 'numpy.ndarray'>    #获取数组的shape    print(a.shape)  #(3,)    #修改数组中的元素    a[1] = 9    print(a)  #[1 9 3]    #通过numpy内置的函数来初始化数组    #创建一个全0的数组    b = np.zeros((3,3))    print(b)    '''    [[ 0.  0.  0.]     [ 0.  0.  0.]     [ 0.  0.  0.]]    '''    #创建一个全1的数组    c = np.ones((3,3))    print(c)    '''    [[ 1.  1.  1.]     [ 1.  1.  1.]     [ 1.  1.  1.]]    '''    #创建一个指定的矩阵    d = np.full((3,3),6)    print(d)    '''    [[ 6.  6.  6.]     [ 6.  6.  6.]     [ 6.  6.  6.]]    '''    #创建一个单位矩阵    e = np.eye(3)    print(e)    '''    [[ 1.  0.  0.]     [ 0.  1.  0.]     [ 0.  0.  1.]]    '''    #创建一个随机数的矩阵    f = np.random.random((3,3))    print(f)    '''    [[ 0.96550928  0.59525056  0.58061721]     [ 0.21303049  0.82996793  0.77914749]     [ 0.30441988  0.6055475   0.93730574]]    '''

二、numpy切片

import numpy as npif __name__ == "__main__":    #数组切片    #创建一个数组    a = np.array([[1,2,3],[4,5,6],[7,8,9]])    #对numpy数组进行切片    #切片的时候,下标是从0开始的,但是不包括右边区间    b = a[:2,:3]    print(b)    '''    [[1 2 3]    [4 5 6]]    '''    c = a[1:2,1:2]    print(c)    '''    [[5]]    '''    #改变切片后的任意一个元素值,所有的数组相应的值也都会发现改变,这里与Python的列表切片有所不同    #从下面的结果其实可以将numpy的切片理解成为地址的复制    c[0,0] = 55    print(a)    '''    [[ 1  2  3]    [ 4 55  6]    [ 7  8  9]]    '''    print(b)    '''    [[ 1  2  3]    [ 4 55  6]]    '''    print(c)    '''    [[55]]    '''    '''    下面通过三种不同的切片方法来获取数组a的最后一行元素    通过下面可以发现,其实第一种方法和第三种方法的结果是一样的    可以理解成a[2]其实就是指定获取数组第二行的所有元素    '''    #获取的数组比原数组的阶要低    row_1 = a[2,:]    print(row_1)        #[7 8 9]    print(row_1.shape)  #(3,)    #获取的数组与原数组拥有相同的阶    row_2 = a[2:3,:]    print(row_2)        #[[7 8 9]]    print(row_2.shape)  #(1, 3)    row_3 = a[2]    print(row_3)        #[7 8 9]    print(row_3.shape)  #(3,)    '''    通过上面对数组进行切片操作,也许你会发现一个问题,    获取的数组总是原数组的子数组,要么是属于原数组的某(几)一行或者某(几)一列中的元素    下面介绍一种获取原数组中任意元素所组成的数组的方法    '''    arbitrary = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])    #[0,0,2]作为数组arbitrary行的下标,[0,1,2]作为数组列的下标,然后进行一一对应组合    arbitrary_1 = arbitrary[[0,0,2],[0,1,2]]    print(arbitrary_1)  #[1 2 9]    arbitrary_2 = np.array([arbitrary[0,0],arbitrary[0,1],arbitrary[2,2]])    print(arbitrary_2)  #[1 2 9]



原创粉丝点击