zoukankan      html  css  js  c++  java
  • NLP学习笔记08---python编程高阶函数使用(numpy数组的创建、索引、装置、文件的操作等)

    1.列表推导式

    列表推导式(又称列表解析式)提供了一种简明扼要的方法来创建列表

    它的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是 0 个或多个 for 或者 if 语句。那个表达式可以是任意的,意思是你可以在列表中放入任意类型的对象。返回结果将是一个新的列表,在这个以 if 和 for 语句为上下文的表达式运行完成之后产生。

    列表推导式的执行顺序:各语句之间是嵌套关系,左边第二个语句是最外层,依次往右进一层,左边第一条语句是最后一层。

    (1)range() 函数

    可创建一个整数列表,一般用在 for 循环中。

    start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
    stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
    step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

    示例:

    >>>range(10)        # 从 0 开始到 10
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 11)     # 从 1 开始到 11
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    >>> range(0, 30, 5)  # 步长为 5
    [0, 5, 10, 15, 20, 25]
    >>> range(0, 10, 3)  # 步长为 3
    [0, 3, 6, 9]
    >>> range(0, -10, -1) # 负数
    [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
    >>> range(0)
    []
    >>> range(1, 0)
    []

    (2)列表表达式的应用案例

    list = [x*y for x in range(1,5) if x > 2 for y in range(1,4) if y < 3]
    print(list)

    他的执行顺序是:

    for x in range(1,5)
        if x > 2
            for y in range(1,4)
                if y < 3
                    x*y

    运行效果:

    2.Numpy简介

    NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

    NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用, 这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。

    SciPy 是一个开源的 Python 算法库和数学工具包。

    SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。

    Matplotlib 是 Python 编程语言及其数值数学扩展包 NumPy 的可视化操作界面。它为利用通用的图形用户界面工具包,如 Tkinter, wxPython, Qt 或 GTK+ 向应用程序嵌入式绘图提供了应用程序接口(API)。

    numpy其实就是一个数组对象

    3.Numpy数组的创建、索引、切片、转置

    (1)numpy的入门案例

    import numpy as np
    data = [1, 2, 3, 4, 5]
    n = np.array(data * 10)
    print(n)
    print(n.shape)  # shape方法获取n这个数组的维度
    print(n.dtype)  # 获取数组的类型

    运行效果:

    (2)numpy数组的创建

    <1>嵌套序列:由一组等长列表组成的列表

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

    效果图:

    <2>zeros函数进行指定长度数组的创建

    import numpy as np
    arr2=np.zeros(10)
    print(arr2)

    效果图:

    <3>ones函数创建数组

    import numpy as np
    arr2=np.ones((2,3))
    print(arr2)

    效果图:

    <4>arange函数创建数组

    import numpy as np
    arr2=np.arange(10)
    print(arr2)

    效果图:

    <5>数据类型转换

    import numpy as np
    arr=np.array([1,3.4,5,8,9])
    print(arr)
    print(arr.dtype)
    print(arr.astype(np.int32))

    效果图:

    (3)矢量化

    numpy的数组通常在不用编写循环的情况下进行批量运算

    <1>一维数组

    import numpy as np
    arr1=np.array([1,2,3,4])
    arr2=np.array([2,4,6,8])
    print(arr1+arr2)

    效果图:

    <2>二维数组

    import numpy as np
    arr1=np.array([[1,2,3,4],[1,2,3,4]])
    arr2=np.array([[2,4,6,8],[3,6,9,12]])
    print(arr1+arr2)

    效果图:

    <3>其他运算(以乘法为例)

    import numpy as np
    arr1=np.array([[1,2,3,4],[1,2,3,4]])
    arr2=np.array([[2,4,6,8],[3,6,9,12]])
    print(arr1*arr2)

    效果图:

    <4>numpy数组的广播

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

    效果图:

    (4)numpy数组的索引和切片

    <1>一维数组

    import numpy as np
    arr=np.arange(10)
    print(arr)
    print(arr[2])  # 获取arr数组的第2个元素(索引从0开始)
    print(arr[4:])  # 获取arr数组的第4个元素开始到结尾的数组
    arr[1:3]=11   # 修改数组的元素值(不包含3的位置)
    print(arr)

    效果图:

    <2>二维数组

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

    效果图:

    <3>numpy数组比较运算

    import numpy as np
    names=np.array(['tony','jack','linda'])
    print(names=='jack')

    效果图:

    <4>numpy数组的花式索引

    import numpy as np
    arr=np.arange(32).reshape(8,4)
    print(arr)
    print(arr[[1,5,7,2]])

    取出8*4矩阵的第1,5,7,2行组成新的数组

    效果图:

    (5)数组转置和轴对换

    转置是重塑数组的一种特殊形式。常用的方法是T 和transpose

    import numpy as np
    arr=np.arange(15).reshape(3,5)
    print(arr)
    print(arr.transpose())

    效果图:

    4.numpy的文件操作

    numpy可以读写磁盘上的文本数据或者是二进制数据

    (1)保存为npy格式的文件

    主要应用的函数是np.save和np.load,默认情况下数据是以未压缩的原始二进制格式保存在扩展名为.npy文件中

    import numpy as np
    arr=np.arange(10)
    np.save('lucky',arr)
    print(np.load('lucky.npy'))

    效果图:

    (2)将数据保存为txt格式的文件

    import numpy as np
    arr=np.arange(10)
    np.savetxt('lucky.txt',arr,delimiter=',')
    print(np.loadtxt('lucky.txt',delimiter=','))

    效果图:

    5.numpy的线性代数

    dot函数计算矩阵的乘法运算、trace函数计算对角线元素的和、det函数计算矩阵的行列式、eig计算矩阵的特征值和特征向量、inv计算矩阵的逆

    import numpy as np
    x=np.array([[1,2,3],[4,5,6]])
    y=np.array([[1,2],[4,5],[7,8]])
    print(x.dot(y))

    效果图:

  • 相关阅读:
    Python之路:堡垒机实例
    Django入门
    阿里云centos安装svn和submin
    发邮件功能
    [Coci2015]Divljak
    [2018多省省队联测]劈配
    [AHOI2009]最小割
    [HAOI2017]新型城市化
    [SDOI2014]LIS
    Loj #2256. 「SNOI2017」英雄联盟
  • 原文地址:https://www.cnblogs.com/luckyplj/p/12772834.html
Copyright © 2011-2022 走看看