Python 课程5-NumPy库

        在数据处理和科学计算中,NumPy 是一个非常强大且基础的库。除了基本的创建数组功能之外,NumPy 提供了许多强大的函数和方法,用于执行高级的矩阵运算、统计分析、逻辑操作等。以下是一些常用且非常有用的 NumPy 指令,涵盖了创建数组、操作数组、数学运算、矩阵操作等方面。


NumPy 常用指令

1. 创建数组
  • array():从列表或元组创建一个 NumPy 数组。

    arr = np.array([1, 2, 3])
    print(arr)  # 输出:[1 2 3]
    

  • zeros():创建一个全零数组。

    zeros_arr = np.zeros((3, 3))
    print(zeros_arr)
    

  • ones():创建一个全一数组。

    ones_arr = np.ones((2, 3))
    print(ones_arr)
    

  • empty():创建一个空数组(未初始化,包含任意值)。

    empty_arr = np.empty((2, 2))
    print(empty_arr)
    

  • arange():生成等差数列。

    arange_arr = np.arange(0, 10, 2)
    print(arange_arr)  # 输出:[0 2 4 6 8]
    

  • linspace():生成在指定范围内均匀分布的值。

    lin_arr = np.linspace(0, 1, 5)
    print(lin_arr)  # 输出:[0.   0.25 0.5  0.75 1.  ]
    

  • eye():创建单位矩阵(对角线为 1,其余元素为 0)。

    identity_matrix = np.eye(3)
    print(identity_matrix)
    

2. 数学运算
  • sum():计算数组元素的和。

    arr = np.array([1, 2, 3, 4])
    print(np.sum(arr))  # 输出:10
    

  • mean():计算数组元素的平均值。

    print(np.mean(arr))  # 输出:2.5
    

  • std():计算数组元素的标准差。

    print(np.std(arr))  # 输出:1.118033988749895
    

  • min()max():找出数组中的最小值和最大值。

    print(np.min(arr))  # 输出:1
    print(np.max(arr))  # 输出:4
    

  • prod():计算数组所有元素的乘积。

    print(np.prod(arr))  # 输出:24
    

3. 数组操作
  • reshape():改变数组的形状,而不改变其数据。

    arr = np.array([1, 2, 3, 4, 5, 6])
    reshaped_arr = arr.reshape(2, 3)  # 变成 2 行 3 列
    print(reshaped_arr)
    

  • transpose():转置矩阵。

    matrix = np.array([[1, 2, 3], [4, 5, 6]])
    transposed_matrix = matrix.transpose()
    print(transposed_matrix)
    

  • flatten():将多维数组展平成一维数组。

    flat_arr = reshaped_arr.flatten()
    print(flat_arr)  # 输出:[1 2 3 4 5 6]
    

  • concatenate():连接两个或多个数组。

    arr1 = np.array([1, 2])
    arr2 = np.array([3, 4])
    concatenated = np.concatenate((arr1, arr2))
    print(concatenated)  # 输出:[1 2 3 4]
    

  • split():将数组分割成多个子数组。

    split_arr = np.split(arr, 3)
    print(split_arr)  # 输出:[array([1, 2]), array([3, 4]), array([5, 6])]
    

4. 逻辑与条件运算
  • where():根据条件返回数组中的元素。

    arr = np.array([1, 2, 3, 4, 5])
    result = np.where(arr > 3, '大于 3', '小于等于 3')
    print(result)  # 输出:['小于等于 3' '小于等于 3' '小于等于 3' '大于 3' '大于 3']
    

  • all()any():检查数组中是否所有元素为 True,或是否有任一元素为 True。

    bool_arr = np.array([True, False, True])
    print(np.all(bool_arr))  # 输出:False
    print(np.any(bool_arr))  # 输出:True
    

5. 随机数生成
  • random.rand():生成 0 到 1 之间的均匀分布随机数。

    rand_arr = np.random.rand(2, 2)
    print(rand_arr)
    

  • random.randn():生成服从标准正态分布的随机数。

    randn_arr = np.random.randn(2, 3)
    print(randn_arr)
    

  • random.randint():生成指定范围内的随机整数。

    randint_arr = np.random.randint(0, 10, size=(3, 3))
    print(randint_arr)
    

6. 广播机制

NumPy 支持不同形状的数组之间进行算术运算,这是 NumPy 的广播机制。

7. 矩阵运算
  • dot():进行矩阵乘法运算。

    mat1 = np.array([[1, 2], [3, 4]])
    mat2 = np.array([[5, 6], [7, 8]])
    result = np.dot(mat1, mat2)
    print(result)  # 输出:[[19 22] [43 50]]
    

  • inv():计算矩阵的逆(需要 linalg 模块)。

    from numpy.linalg import inv
    matrix = np.array([[1, 2], [3, 4]])
    inverse_matrix = inv(matrix)
    print(inverse_matrix)
    

  • det():计算矩阵的行列式。

    from numpy.linalg import det
    determinant = det(matrix)
    print(determinant)
    

  • eig():计算矩阵的特征值和特征向量。

    from numpy.linalg import eig
    values, vectors = eig(matrix)
    print("特征值:", values)
    print("特征向量:", vectors)
    


结论

        NumPy 是 Python 科学计算的核心库之一,其功能远不止创建数组和基本的数学运算。通过上述指令,你可以高效地进行数组操作、矩阵运算、随机数生成以及逻辑运算等。对于需要处理大量数据的项目,掌握 NumPy 的这些强大功能,可以显著提升程序的性能和开发效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1534617.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

一个新目标:开始每日练习打字

前言 每日10行代码写了183篇,比最开始预想的要多,但比我理想的篇数要少,我理想的篇数是300篇以上。 python每日学写到了18篇,本来是准备每日学的,但是架不住生活无常,最终还是没有达成目标,不过…

软件研制功能点拆分

最近需要进行软件研制概算明细表中的估算对象原始功能点,记录一下学习过程,共有EI(external input 外部输入)、EO(外部输出)、EQ(外部查询)、ILF(internal logic 内部逻辑文件)、EIF(外部接口文件)五个。 功能点计数项分为数据功能(逻辑文件&…

[linux基础知识]教你使用vim和ctags阅读linux内核源码

1 安装ctags apt install ctags 2 内核源码目录下添加索引 使用下面命令,添加索引成功后,内核目录下会生成tags 索引文件。 ctags -R 3 vim使用索引阅读源码 跳转到函数变量定义与返回 #跳到函数或者变量定义 Ctrl] #返回 Ctrlo 光标移动到需要…

python画图|3D参数化图形输出

前面已经学习了基本的3D作图,具体链接如下: 基础教程:python画图|3D图基础教程-CSDN博客 直方图教程:python画图|3D直方图基础教程-CSDN博客 垂线标记教程:python画图|3D垂线标记-CSDN博客 3D surface教程&#xf…

Kamailio-基于Homer与heplify的SIP信令监控-2

接上篇,我们已经顺利地完成了服务的安装,下面就来看看如何配置并启动。 跟着我,你将学会: 下载并安装 踩坑:按照官方步骤来,可是网络条件不允许 获取YUM源下载RPM包手动解压安装避坑 配置并启动&#xf…

如何计算光伏在安装过程中的损耗程度?

光伏系统在实际安装和运营过程中,会受到多种因素的影响,导致电能损耗。这些损耗包括线缆损耗、逆变器效率、组件品质、灰尘积累、入射角损失等。 一、光伏系统损耗的分类 光伏系统的损耗大致可以分为以下几类: 1、线缆损耗:光伏…

文件外发怎么保证安全

为了确保文件在外发过程中的安全,金刚钻信息网站的防泄密系统支持以下多种措施来防止数据泄露和未经授权的访问: 1. 文件加密 加密文件:在文件外发前对其进行加密处理,确保只有持有解密密钥或密码的人才能访问文件内容。加密工具…

uview-plus 表单校验 相关字段有数据有值的情况下非空验证失败问题

你们好,我是金金金。 场景 uniapp编写h5及小程序,组件库用的uview-plus,在进行表单校验的过程中,数据回显 数量明明是有值的,还是依旧提示填写数量(重新再次手动输入才能校验通过,明显是存在问题…

电子电路产业园废水处理与资源回收的创新实践

随着电子产品的普及和技术革新步伐的加快,电子电路制造业已成为推动现代科技发展的关键力量之一。然而,随之而来的环保问题不容忽视。电镀工艺作为电子电路生产中的一个核心环节,其产生的含镍废水处理成为了企业必须面对的重要课题。本文将探…

Oracle发邮件功能:设置的步骤与注意事项?

Oracle发邮件配置教程?如何实现Oracle发邮件功能? Oracle数据库作为企业级应用的核心,提供了内置的发邮件功能,使得数据库管理员和开发人员能够通过数据库直接发送邮件。AokSend将详细介绍如何设置Oracle发邮件功能。 Oracle发邮…

悟空crm客户管理系统二次开发 单独新增表格字段

1,仪表盘(数据来源修改) 注意点:有层级关系,管理员账号可以看到全部数据,主管只能看到下属数据。 2、在客户管理菜单里面 增加一个时间筛选、额度汇总 /*** 获取客户列表** param $type* param $content*…

vagrant+virtualbox+ubuntu22.04无法上网问题

一、过程 vagrantfile配置私有网络 config.vm.network "private_network", ip: "192.168.56.10"启动虚拟机,可以ping通百度的实际IP,ping不通域名修改/etc/netplan/50-vagrant.yaml,配置DNS network:renderer: Networ…

2024年9月一区SCI-神经种群动态优化算法NPDOA-附Matlab免费代码

引言 本期介绍了一种受脑神经科学启发的元启发式算法,称为神经种群动态优化算法Neural population dynamics optimization algorithm(NPDOA)的元启发式算法。该成果于2024年9月最新发表在中科院1区 Top SCI期刊 Knowledge-Based Systems。 原文作者将NPDOA与其他9种…

智慧体育场馆:科技引领未来运动体验

在当今数字化时代,​智慧体育场馆​的建设不仅提升了观众、运动员和管理者的体验质量,也为体育产业注入了新的活力和创新。通过整合先进科技和智能系统,体育场馆能够实现更高效的运营管理、提升赛事体验以及优化资源利用。以下是古河云科技构…

JavaSE - 易错题集 - 006

1. 哪个正确 A abstract类只能用来派生子类,不能用来创建abstract类的对象。 B final类不但可以用来派生子类,也可以用来创建final类的对象。 C abstract不能与final同时修饰一个类。 D abstract类定义中可以没有abstract方法。 正确答案&#xff1…

GMB外链是什么?

GMB外链其实就是百万外链,它是一种通过大量反向链接来提升网站页面权重的方法。如果你刚建了一个新网站,想在短时间内被收录并获得排名,GMB外链能帮你做到这点。它不像传统SEO那样需要等待好几个月的效果,GMB外链能在24小时内帮你…

TVS瞬态抑制二极管,单向和双向有什么区别?

1、TVS瞬态抑制二极管的分类 根据方向来分,有单向和双向之分; 根据外形来看,有直插和贴片之分; 根据工作电压来分,有高压和低压之分; 根据功率大小来分,有小功率和大功率之分; …

论文解读《NewsBench:一个评估中文新闻大型语言模型编辑能力的系统评估框架》

引言:感觉这篇文章,对 LLMs 的新闻编辑能力做了一个详细的实验和分析,而且还贡献了一个宝贵的中文新闻数据集,蛮不错的,后面或许可以用起来,就拜读了一下。 这篇博客的题目说是解读,其实大部分…

在Ubuntu中编译含有JSON的文件出现报错

在ubuntu中进行JSON相关学习的时候,我发现了一些小问题,决定与大家进行分享,减少踩坑时候出现不必要的时间耗费 截取部分含有JSON部分的代码进行展示 char *str "{ \"title\":\"JSON Example\", \"author\&…

Debian11源码安装mysql5.7

#!/bin/bash# 安装依赖 apt-get update && apt-get install -y wget make gcc g cmake bison libncurses5-dev libssl-dev libtool pkg-config> /dev/null # 安装包所在目录 packages"/usr/local/src" # 数据目录 datadir"/hskj/mysql" # pid文…