• Python操作Numpy模块库


    14天学习训练营导师课程:
    杨鑫《Python 自学编程基础》
    杨鑫《 Python 网络爬虫基础》
    杨鑫《 Scrapy 爬虫框架实战和项目管理》

    Python操作Numpy模块库


    杨老师推荐自学Python的网站

    w3schools
    传送门

    geeksforgeeks
    传送门

    realpython
    传送门

    引用杨老师说的:
    中文的这里不推荐,因为很多机构的翻译水品参差不齐,直接看英文的自己学吧,这个能快速的提升你的技能水平,
    不光是编程,还有英语。
    你可能会问为什么不推荐书籍,因为书籍的时效性太低了,可能出版之后版本都换了好几轮了,
    很多里面的代码都跑不通,具体为什么里也不会给你说,所以直接看网站的教程是最好的选择。
    
    • 1
    • 2
    • 3
    • 4
    • 5

    1.Numpy介绍

    numpy官方文档介绍

    Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展

    Numpy是高性能科学计算和数据分析的基础包。它也是pandas等其他数据分析的工具的基础,基本所有数据分析的包都用过它。NumPy为Python带来了真正的多维数组功能,并且提供了丰富的函数库处理这些数组。它将常用的数学函数都支持向量化运算,使得这些数学函数能够直接对数组进行操作

    2.Numpy安装

    1. window电脑点击win键+R,输入:cmd

    在这里插入图片描述

    2.安装 numpy,pip 命令安装 ,我们使用豆瓣的镜像源来安装

    pip install numpy -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
    
    • 1

    在这里插入图片描述

    3.导包

    import numpy as np
    
    • 1

    3.Numpy模块练习

    numpy数组即numpy的ndarray对象,创建numpy数组就是把一个列表传入np.array()方法。

    3.1 创建数组

    创建一维、二维、三维ndarray对象

    # @Time     : 2022/11/24 19:25
    # @Author   : hyh
    # @File     : Numpy模块练习.py
    # @Software : PyCharm
    
    import numpy as np
    # np.array? 相当于pycharm的ctrl+鼠标左键
    
    # 创建一维的ndarray对象
    arr = np.array([1, 2, 3])
    print(arr, type(arr))
    
    
    # 创建二维的ndarray对象
    print(np.array([[1, 2, 3], [4, 5, 6]]))
    
    # 创建三维的ndarray对象
    print(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]))
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    执行结果:

    在这里插入图片描述

    3.2 获取数组

    由于numpy数组是多维的,对于二维的数组而言,numpy数组就是既有行又有列。

    注意:对于numpy我们一般多讨论二维的数组。

    arr = np.array([[1, 2, 3], [4, 5, 6]])
    print(arr)
    
    # 获取numpy数组的行和列构成的数组
    print(arr.shape)
    
    # 获取numpy数组的行
    print(arr.shape[0])
    
    # 获取numpy数组的列
    print(arr.shape[1])
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    执行结果:

    
    [[1 2 3]
     [4 5 6]]
    
    获取numpy数组的行和列构成的数组
    (2, 3)
    
    获取numpy数组的行
    2
    
    获取numpy数组的列
    3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    3.3 切割数组

    切分numpy数组类似于列表的切割,但是与列表的切割不同的是,numpy数组的切割涉及到行和列的切割,但是两者切割的方式都是从索引0开始,并且取头不取尾。

    # @Time     : 2022/11/24 19:45
    # @Author   : hyh
    # @File     : 切割numpy数组.py
    # @Software : PyCharm
    
    import numpy as np
    arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
    print(arr)
    
    print('取所有元素')
    # 取所有元素
    print(arr[:, :])
    
    
    print('取第一行的所有元素')
    # 取第一行的所有元素
    print(arr[:1, :])
    
    print('取第一列的所有元素')
    # 取第一列的所有元素
    print(arr[:, :1])
    
    print('取第一列的所有元素')
    # 取第一列的所有元素
    print(arr[(0, 1, 2), 0])
    
    print('取第一行第一列的元素')
    # 取第一行第一列的元素
    print(arr[(0, 1, 2), 0])
    
    print('取第一行第一列的元素')
    # 取第一行第一列的元素
    print(arr[0, 0])
    
    print('取大于5的元素,返回一个数组')
    # 取大于5的元素,返回一个数组
    print(arr[arr > 5])
    
    print('numpy数组按运算符取元素的原理,即通过arr > 5生成一个布尔numpy数组')
    # numpy数组按运算符取元素的原理,即通过arr > 5生成一个布尔numpy数组
    print(arr > 5)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    执行结果:

    "D:\Program Files\Python\Python36\python.exe" D:/E/PythonWork/Pytest2022/CSDN打卡/切割numpy数组.py
    [[ 1  2  3  4]
     [ 5  6  7  8]
     [ 9 10 11 12]]
    取所有元素
    [[ 1  2  3  4]
     [ 5  6  7  8]
     [ 9 10 11 12]]
    取第一行的所有元素
    [[1 2 3 4]]
    取第一列的所有元素
    [[1]
     [5]
     [9]]
    取第一列的所有元素
    [1 5 9]
    取第一行第一列的元素
    [1 5 9]
    取第一行第一列的元素
    1
    取大于5的元素,返回一个数组
    [ 6  7  8  9 10 11 12]
    numpy数组按运算符取元素的原理,即通过arr > 5生成一个布尔numpy数组
    [[False False False False]
     [False  True  True  True]
     [ True  True  True  True]]
    
    Process finished with exit code 0
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    3.4 替换数组

    numpy数组元素的替换,类似于列表元素的替换,并且numpy数组也是一个可变类型的数据,即如果对numpy数组进行替换操作,会修改原numpy数组的元素,所以下面我们用.copy()方法举例numpy数组元素的替换。

    # @Time     : 2022/11/24 19:53
    # @Author   : hyh
    # @File     : numpy数组元素替换.py
    # @Software : PyCharm
    
    import numpy as np
    
    arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
    print(arr)
    
    print('取第一行的所有元素,并且让第一行的元素都为0')
    # 取第一行的所有元素,并且让第一行的元素都为0
    arr1 = arr.copy()
    arr1[:1, :] = 0
    print(arr1)
    
    print('取所有大于5的元素,并且让大于5的元素为0')
    # 取所有大于5的元素,并且让大于5的元素为0
    arr2 = arr.copy()
    arr2[arr > 5] = 0
    print(arr2)
    
    print('对numpy数组清零')
    # 对numpy数组清零
    arr3 = arr.copy()
    arr3[:, :] = 0
    print(arr3)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    执行结果:

    "D:\Program Files\Python\Python36\python.exe" D:/E/PythonWork/Pytest2022/CSDN打卡/numpy数组元素替换.py
    [[ 1  2  3  4]
     [ 5  6  7  8]
     [ 9 10 11 12]]
    取第一行的所有元素,并且让第一行的元素都为0
    [[ 0  0  0  0]
     [ 5  6  7  8]
     [ 9 10 11 12]]
    取所有大于5的元素,并且让大于5的元素为0
    [[1 2 3 4]
     [5 0 0 0]
     [0 0 0 0]]
    对numpy数组清零
    [[0 0 0 0]
     [0 0 0 0]
     [0 0 0 0]]
    
    Process finished with exit code 0
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    3.5 合并数组

    numpy数组的合并

    # @Time     : 2022/11/24 20:39
    # @Author   : hyh
    # @File     : numpy数组合并.py
    # @Software : PyCharm
    
    import numpy as np
    
    arr1 = np.array([[1, 2], [3, 4], [5, 6]])
    print(arr1)
    
    arr2 = np.array([[7, 8], [9, 10], [11, 12]])
    print(arr2)
    
    print('合并两个numpy数组的行,注意使用hstack()方法合并numpy数组,numpy数组应该有相同的行,其中hstack的h表示horizontal水平的')
    # 合并两个numpy数组的行,注意使用hstack()方法合并numpy数组,numpy数组应该有相同的行,其中hstack的h表示horizontal水平的
    print(np.hstack((arr1, arr2)))
    
    print('合并两个numpy数组,其中axis=1表示合并两个numpy数组的行')
    # 合并两个numpy数组,其中axis=1表示合并两个numpy数组的行
    print(np.concatenate((arr1, arr2), axis=1))
    
    print('合并两个numpy数组的列,注意使用vstack()方法合并numpy数组,numpy数组应该有相同的列,其中vstack的v表示vertical垂直的')
    # 合并两个numpy数组的列,注意使用vstack()方法合并numpy数组,numpy数组应该有相同的列,其中vstack的v表示vertical垂直的
    print(np.vstack((arr1, arr2)))
    
    print('合并两个numpy数组,其中axis=0表示合并两个numpy数组的列')
    # 合并两个numpy数组,其中axis=0表示合并两个numpy数组的列
    print(np.concatenate((arr1, arr2), axis=0))
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    执行结果:

    "D:\Program Files\Python\Python36\python.exe" D:/E/PythonWork/Pytest2022/CSDN打卡/numpy数组合并.py
    [[1 2]
     [3 4]
     [5 6]]
    [[ 7  8]
     [ 9 10]
     [11 12]]
    合并两个numpy数组的行,注意使用hstack()方法合并numpy数组,numpy数组应该有相同的行,其中hstack的h表示horizontal水平的
    [[ 1  2  7  8]
     [ 3  4  9 10]
     [ 5  6 11 12]]
    合并两个numpy数组,其中axis=1表示合并两个numpy数组的行
    [[ 1  2  7  8]
     [ 3  4  9 10]
     [ 5  6 11 12]]
    合并两个numpy数组的列,注意使用vstack()方法合并numpy数组,numpy数组应该有相同的列,其中vstack的v表示vertical垂直的
    [[ 1  2]
     [ 3  4]
     [ 5  6]
     [ 7  8]
     [ 9 10]
     [11 12]]
    合并两个numpy数组,其中axis=0表示合并两个numpy数组的列
    [[ 1  2]
     [ 3  4]
     [ 5  6]
     [ 7  8]
     [ 9 10]
     [11 12]]
    
    Process finished with exit code 0
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    3.6 numpy数组的常用属性

    属性解释
    T数组的转置(对高维数组而言)
    dtype数组元素的数据类型
    size数组元素的数据类型
    ndim数组的维数
    shape数组的维度大小(以元组形式)
    astype类型转换
  • 相关阅读:
    强者互帮,弱者互撕!
    一幅长文细学Vue(五)——组件高级(上)
    java网络编程
    spring5
    嵌入式linux实现pppoe拨号上网
    C++ 基础:指针和引用浅谈
    屏幕分辨率:PC / 手机 屏幕常见分辨率,前端如何适配分辨率
    数据结构(高阶)—— AVL树
    OceanBase 4.3 特性解析:列存技术
    第二证券|股票做短线要关注什么?
  • 原文地址:https://blog.csdn.net/u014096024/article/details/128026540