美文网首页
NumPy——入门

NumPy——入门

作者: 转身丶即天涯 | 来源:发表于2019-06-03 10:04 被阅读0次
    前言:

    内容来源于NumPy中文文档


    NumPy是一个功能强大的python库,学习它我们可以了解更高级的数据操作和科学计算。
    NumPy名字来源于两个词,Numerical和Python。提供了大量关于数值计算的函数和操作。


    安装

    请参照文档NumPy中文文档


    数组

    数组是NumPy中最常用的数据结构了,一般用于表示矩阵,常见的有一维和二维矩阵。
    首先,我们创建一个矩阵。

    import numpy as np
    
    my_array = np.array([1, 2, 3, 4, 5])
    print(my_array)
    

    首先我们导入了numpy这个包,并给它取了一个别名“np”。
    通过np.array()构造函数创建一个数组,参数接受了一个list。
    打印结果和list(range(5))一样。
    目前,array和list的表现别无二致。

    当然,numpy提供了很多内置函数,供我们使用,我们依次尝试:

    创建长度为5的数组,并且每个元素都是0
    my_zero_array = np.zeros((5,))
    print("my_zero_array:{}".format(my_zero_array))
    

    输出是:[0. 0. 0. 0. 0.]
    在zeros()函数的参数中我们传递了一个tuple,其实这个tuple使用来表示数组的形状的。
    举个例子说明,比如传入(2, 3),那么代表是个二维数组,2行3列。
    这里我们传入(5,),代表它是个一维数组,有5个元素。

    创建长度为5的数组,并且每个元素都是1
    my_ones_array = np.ones(5)
    

    和np.zeros()函数类似。

    自定义二维数组

    我们可以自定义数组的内容,比如[[1, 2], [3, 4]]。

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

    可以看到,我们直接用嵌套list的方式来表示二维数组。

    二维数组取值

    numpy的array支持使用索引取值,用法和list一样。
    比如二维数组[[1,2], [3, 4]],我想取第一行的第二个元素,就可以使用array[0][1]
    需要注意,索引都是从0开始的。

    获取数组的形状

    前面我们已经知道了数组的形状是如何表示的。
    numpy.array有一个属性叫shape,用来获取数组的形状,结果用tuple表示。

    print("my_2d_array2的形状是:{}".format(my_2d_array2.shape))
    

    输出:(2, 2)
    表示这个数组有2行2列。

    按列取值

    按行取值,不必说了,直接array[i]就行。
    numpy提供了一种类似切片的语法让我们可以按列取值。

    my_2d_array2_column_2 = my_2d_array2[:, 1]
    print("my_2d_array2的第2列的值是:{}".format(my_2d_array2_column_2))
    
    二维矩阵的加减乘除
    import numpy as np
    
    # 二维矩阵的加减乘除
    # 规则是对应位置的元素执行对应的操作(逐行逐元素操作)
    a = np.array([[1.0, 2.0], [3.0, 4.0]])
    b = np.array([[5.0, 6.0], [7.0, 8.0]])
    
    sum = a + b
    difference = a - b
    product = a * b
    quotient = a / b
    
    print("sum:{}".format(sum))
    print("difference:{}".format(difference))
    print("product:{}".format(product))
    print("quotient:{}".format(quotient))
    
    
    # 如果要执行矩阵乘法
    matrix_product = a.dot(b)
    print("矩阵乘法a * b: {}".format(matrix_product))
    
    堆叠数组
    import numpy as np
    
    
    a = np.floor(10 * np.random.random((2,3)))
    b = np.floor(10 * np.random.random((2,3)))
    
    print("array_a:{}".format(a))
    print("array_b:{}".format(b))
    
    
    # 堆叠数组
    # vstack,水平堆叠。
    # 把b放在a的下面,比如a和b的shape都是为2*3,堆叠后是4*3
    array_vstack = np.vstack((a, b))
    print("array_vstack:{}".format(array_vstack))
    
    # hstack,垂直堆叠。
    # 把b放在a的右边,比如a和b的shape都是2*3,堆叠后是2*6
    array_hstack = np.hstack((a, b))
    print("array_hstack:{}".format(array_hstack))
    
    数组拆分
    import numpy as np
    from numpy import newaxis
    
    
    a = np.floor(10 * np.random.random((2,2)))
    b = np.floor(10 * np.random.random((2,2)))
    
    print("array_a:{}".format(a))
    print("array_b:{}".format(b))
    
    
    array_column_stack = np.column_stack((a, b))
    print("array_column_stack:{}".format(array_column_stack))
    
    
    # 把一维数组拆分为每个元素一个维度
    # 比如[4, 2],拆分后为[[4], [2]]
    c = np.array([4, 2])
    print("c newaxis:{}".format(c[:, newaxis]))
    
    
    # 数组拆分
    # 将一组数组拆分为若干个较小的数组
    d = np.floor(10 * np.random.random((2, 12)))
    print("d: {}".format(d))
    
    # 横向拆分
    d_hsplit = np.hsplit(d, (3, 4))
    print("横向拆分为4份:{}".format(d_hsplit))
    
    # 纵向拆分
    d_vsplit = np.vsplit(d, 2)
    print("纵向拆为2份:{}".format(d_vsplit))
    
    更改数组的形状
    import numpy as np
    
    # 更改数组的形状
    a = np.floor(10 * np.random.random((3, 4)))
    print("a: {}".format(a))
    print("a's shape:{}".format(a.shape))
    
    
    # 修改数组
    # array.ravel()
    # 将多为矩阵改为一维数组,方式为从第一行起,依次拼接在后面
    array_ravel = a.ravel()
    print("array_ravel: {}".format(array_ravel))
    
    # array.reshape()
    # 将矩阵按照指定形状排列,比如初始3行4列,reshape后改为6行2列
    # 特别说明:如果某一维度参数为-1,则自动计算此维度
    array_reshape = a.reshape(6, 2)
    print("array_reshape: {}".format(array_reshape))
    
    # array.T
    # 转置矩阵
    array_T = a.T
    print("转置矩阵a:{}".format(array_T))
    

    相关文章

      网友评论

          本文标题:NumPy——入门

          本文链接:https://www.haomeiwen.com/subject/lwahtctx.html