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.mfbz.cn/a/875742.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java: 程序包org.junit.jupiter.api不存在

明明idea没有报错,引用包也没问题,为啥提示java: 程序包org.junit.jupiter.api不存在? 配置!还TMD是配置! 如果是引用包的版本不对或者其他,直接就是引用报错或者pom里面飘红了。 这个应该是把generat…

设置使用阿里云服务器DNS

由于云服务器是从腾讯云迁移到阿里云,然后使用ssl验证时一直无法使用dns验证,也无法创建三级域名,原来需要把阿里云服务器改成阿里云的dns使用 如果使用其他服务器DNS会下面会显示当前DNS服务器,

冯诺依曼体结构与系统

冯诺依曼结构 我们的计算机,以及服务器,还有我我们日常使用的洗衣机都遵循冯诺依曼体结构。 以我们日常使用qq聊天时举例,冯诺依曼体结构可以这样画 截至目前,我们所认识的计算机,都是有一个个的硬件组件组成 输入单元…

基于SpringBoot+Vue+MySQL的美术馆管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着文化艺术产业的蓬勃发展,美术馆作为展示与传播艺术的重要场所,其管理工作变得日益复杂。为了提升美术馆的运营效率、优化参观体验并加强艺术品管理,我们开发了基于SpringBootVueMySQL的美…

SAP B1 营销单据 - 单据字段介绍(中)

背景 营销单据,SAP B1 中一群神秘的单据,在官方说明文档中并未指明【营销单据】范围,却经常使用这一说法。它们结构相似,在 用户定义字段(UDF) 功能里统一受【营销单据】部分增加字段的影响,可以相互复制(…

POI生成Excel文件增加数据验证(下拉序列)

POI版本为5.2.2 正常的如果不超过255字符的数据验证可以参照如下代码&#xff1a; /*** <p>设置某列的数据验证</p>* param Sheet 作用于哪一个sheet* param colIndex 需要增加数据验证的列的索引* String[] names 数据验证的序列&#xff0c;就是excel下拉列表的内…

codesys将自定义的功能块或者函数保存到本地库

将通过ST代码实现的自定义功能保存到codesys的本地库&#xff0c;其他project可以直接实现调用。提高灵活性和效率。 1、创建库工程 这里可能会提示涉及个别库没有安装或版本更新&#xff0c;根据提示安装对应库或更新即可。 2、添加功能块和函数 3、编写功能块和函数的参数定…

【Linux】查看操作系统开机时初始化的驱动模块列表的一个方法

这个方法是摸索出来的&#xff0c;也不一定对&#xff1a; 1、驱动层module_init(module_init_function)作为模块初始化&#xff0c;并且提供模块内部初始化的函数名&#xff1b; 2、找到所有驱动目录drivers下所有module_init(module_init_function)&#xff0c;在内核6.9.0…

js 深入理解生成器

目录 概述1 . 生成器基础2. 与普通函数的区别3. 通过 yield 中断执行3.1 yield 是干嘛的&#xff1f;3.2 yield 和 return 的区别3.3 每个生成器对象作用域都是独立的3.4 yeild 的使用位置3.5 生成器对象作为可迭代对象3.6 使用 yield 实现输入和输出3.6.1 yield实现输入3.6.1 …

4G物联网智能电表是什么?什么叫4G物联网智能电表?

4G物联网智能电表是一种结合了4G无线通信技术的新型电能计量设备&#xff0c;用于实时采集和传输用户的用电数据。它通过集成现代信息技术和电力电子技术&#xff0c;不仅能够精确测量电力消耗&#xff0c;还能实现远程数据传输、数据分析、远程控制等多种功能。本文将详细介绍…

【运维监控】influxdb 2.0+grafana 监控java 虚拟机以及方法耗时情况(2)

运维监控系列文章入口&#xff1a;【运维监控】系列文章汇总索引 文章目录 四、grafana集成influxdb监控java 虚拟机以及方法耗时情况1、添加grafana数据源2、添加grafana的dashboard1&#xff09;、选择新建dashboard方式2&#xff09;、导入dashboard 3、验证 关于java应用的…

CSS学习17--CSS3 过渡、2D变形、3D变形、动画

CSS3 过渡、2D变形、3D变形、动画 一、过渡二、2D变形 transform1.移动 translate2.缩放 scale3. 旋转 rotate4. 倾斜 skew 三、3D变形1. rotateX&#xff08;&#xff09;rotateY&#xff08;&#xff09; rotateZ&#xff08;&#xff09;2. 体会透视 perspective3. translat…

[数据集][目标检测]车油口挡板开关闭合检测数据集VOC+YOLO格式138张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;138 标注数量(xml文件个数)&#xff1a;138 标注数量(txt文件个数)&#xff1a;138 标注类别…

CleanMyMac X2024破解版mac电脑清理工具

今天&#xff0c;我要跟大家分享一个让我彻底告别电脑卡顿的秘密武器——CleanMyMac X。这不仅仅是一款普通的清理工具&#xff0c;它是你电脑的私人健身教练&#xff0c;让电脑焕发青春活力&#xff01; CleanMyMac直装官方版下载地址&#xff1a; http://wm.makeding.com/i…

【通用分割模型】SAM 2论文翻译

文章目录 摘要1 引言2 相关工作3 任务&#xff1a;可提示视觉分割4 模型5 数据5.1 数据引擎5.2 SA-V数据集 6 零样本实验6.1 视频任务6.1.1 提示视频分割6.1.2 半监督视频对象分割6.1.3 公平性评估 6.2 图像任务 7 与半监督VOS的最新技术的比较8 数据和模型消融8.1 数据消融8.2…

JavaSE篇之内部类和图书系统

1.内部类(类中类) 在Java中&#xff0c;将一个类定义在另一个类内部&#xff0c;前者称为内部类&#xff0c;后者称为外部类。 注意事项&#xff1a; 1. 1.静态内部类&#xff08;被static修饰的内部类&#xff09; 1.在静态内部类的方法中不能直接引用外部类的成员变量&…

手把手教你捏一个自己的Agent

01 前言 Modelscope AgentFabric是一个基于ModelScope-Agent的交互式智能体应用&#xff0c;用于方便地创建针对各种现实应用量身定制智能体&#xff0c;目前已经在生产级别落地。 AgentFabric围绕可插拔和可定制的LLM构建&#xff0c;并增强了指令执行、额外知识检索和利用…

Qt控制开发板的LED

Qt控制开发板的LED 使用开发板的IO接口进行控制是嵌入式中非常重要的一点&#xff0c;就像冯诺依曼原理说的一样&#xff0c;一个计算机最起码要有输入输出吧&#xff0c;我们有了信息的接收和处理&#xff0c;那我们就要有输出。 我们在开发板上一般都是使用开发板的GPIO接口…

Leetcode 旋转图像

解题思路&#xff1a; 转置矩阵&#xff1a;通过将矩阵的行列互换来实现转置操作。水平翻转矩阵&#xff1a;通过将每行的数据进行对称交换&#xff0c;从而完成90度旋转。 通过这两个步骤&#xff0c;矩阵就会顺时针旋转90度。 class Solution { public:void rotate(vector…

数仓建设:为什么我们的数据容易被业务方质疑?

目录 0 问题背景 1 问题产生的原因 2 问题解决方案 3 小结 数字化建设通关指南专栏原价99&#xff0c;现在活动价39.9&#xff0c;按照阶梯式增长&#xff0c;直到恢复原价 0 问题背景 “ 在数字化建设进程中&#xff0c;无论是处于数据产品的你&#xff0c;或是数据开发的…