Python 课程5-NumPy库

news2024/11/15 15:52:29

        在数据处理和科学计算中,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.coloradmin.cn/o/2141799.html

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

相关文章

STM32 BootLoader 刷新项目 (六) 获取帮助-命令0x52

STM32 BootLoader 刷新项目 (六) 获取帮助-命令0x52 在嵌入式MCU软件开发中,通过串口进行人机交互是非常常见且重要的操作方式。获取帮助的命令通常用来向用户展示所有支持的交互指令及其使用方法。详细介绍如下: 获取帮助命令的作用 用户友好性&#…

进程之信号

文章目录 进程信号中断的概念信号是异步事件Linux信号信号发生的来源信号的处理方式signal函数示例--使用signal函数对常见的信号进行捕获、执行默认操作、忽略三种方式处理 SIGCHLD信号示例--使用SIGCHLD信号来避免子进程退出 kill函数raise函数示例--使用kill函数给指定进程发…

基于python+django+vue的学生成绩管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于协同过滤pythondjangovue…

Java之线程篇四

目录 volatile关键字 volatile保证内存可见性 代码示例 代码示例2-(volatile) volatile不保证原子性 synchronized保证内存可见性 wait()和notify() wait()方法 notify() 理解notify()和notifyAll() wait和sleep的对比 volatile关键字 volati…

【C++ Primer Plus习题】16.3

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: #include <iostream> #include <string> #include <…

Datawhale------Tiny-universe学习笔记——Qwen(1)

1. Qwen整体介绍 对于一个完全没接触过大模型的小白来说&#xff0c;猛一听这个名字首先会一懵&#xff1a;Qwen是啥。这里首先解答一下这个问题。下面是官网给出介绍&#xff1a;Qwen是阿里巴巴集团Qwen团队研发的大语言模型和大型多模态模型系列。其实随着大模型领域的发展&a…

Linux服务器上安装git lfs命令

有时候&#xff0c;需要批量下载数据集时要用到git lfs命令 首先&#xff0c;使用pip install git-lfs安装&#xff0c;会发现使用时仍然提示&#xff1a;git: lfs is not a git command. See git --help. 这就意味着安装不成功。 因此&#xff0c;需要通过如下途径手动安装&a…

基于YOLOv5的农作物叶片病害识别系统

植物农作物叶片病虫害识别系统&#xff1a;农作物叶片病害AI检测与识别系统 源码 带UI界面说明视频 模型&#xff1a;yolov5 功能: 农作物叶片病害检测系统用于智能检测常见农作物叶片病害情况&#xff0c;自动化标注、记录和保存病害位置和类型&#xff0c;辅助作物病害防治以…

【Motion Forecasting】【摘要阅读】BANet: Motion Forecasting with Boundary Aware Network

BANet: Motion Forecasting with Boundary Aware Network 这项工作发布于2022年&#xff0c;作者团队来自于OPPO。这项工作一直被放在arxiv上&#xff0c;并没有被正式发表&#xff0c;所提出的方法BANet在2022年达到了Argoverse 2 test dataset上的SOTA水准。 Method BANet…

用Python解决综合评价问题_模糊综合评价,决策树与灰色关联分析

一&#xff1a;模糊综合评价 模糊综合评价是一种有效的处理不确定性和模糊性的评价方法&#xff0c;特别是在人才评价等领域。它允许我们综合考虑多个评价指标&#xff0c;并给出一个综合的评价结果。以下是利用模糊综合评价对人才进行评价的步骤&#xff1a; 确定评价指标&am…

进阶SpringBoot之异步任务、邮件任务和定时执行任务

SpringBooot 创建 Web 项目 异步任务&#xff1a; service 包下创建 AsyncService 类 Async 异步方法 Thread.sleep(3000) 停止三秒&#xff0c;捕获异常 package com.demo.task.service;import org.springframework.scheduling.annotation.Async; import org.springfram…

【MySQL】Windows下重启MySQL服务时,报错:服务名无效

1、问题描述 在终端中&#xff0c;停止、启动MySQL服务时报错&#xff1a;服务名无效 2、原因分析 1&#xff09;权限不够 如果是权限不够&#xff0c;会提示&#xff1a;系统错误5&#xff0c;拒绝访问。 2&#xff09;服务名错误 如果是服务名错误&#xff0c;会提示“…

第313题|解积分不等式题目的5种方法常用方法|武忠祥老师每日一题

解题思路&#xff1a;把多阶次积分和函数值联系起来&#xff0c;应该想到泰勒公式。 本题应该使用带有拉格朗日余项的泰勒公式&#xff1a; 方法一&#xff1a; 等式左右两边进行积分&#xff0c;右边第一项常数项不变&#xff0c;第二项&#xff08;x-1/2&#xff09;积完之…

macOS Sequoia 正式版(24A335)黑苹果/Mac/虚拟机系统镜像

“ 以下内容来自于黑果魏叔官网” 镜像特点 完全由黑果魏叔官方制作&#xff0c;针对各种机型进行默认配置&#xff0c;让黑苹果安装不再困难。系统镜像设置为双引导分区&#xff0c;全面去除clover引导分区&#xff08;如有需要&#xff0c;可以自行直接替换opencore分区文件为…

web安全测试入门

参考课程&#xff1a; 04-软件安全测试基础-网络协议基础-网络模型_哔哩哔哩_bilibili 1.软件安全测试概述 安全测试&#xff1a; 安全性测试指有关验证应用程序的安全等级和识别潜在安全性缺陷的过程 导致软件出现安全问题的主要原因或根源是软件的安全漏洞 安全漏洞&#x…

网页交互模拟:模拟用户输入、点击、选择、滚动等交互操作

目录 一、理论基础 1.1 网页交互模拟的重要性 1.2 网页交互的基本原理 二、常用工具介绍 2.1 Selenium 2.2 Puppeteer 2.3 Cypress 2.4 TestCafe 三、实战案例 3.1 模拟用户输入 3.2 模拟用户点击 3.3 模拟用户选择 3.4 模拟滚动操作 四、最佳实践与优化 4.1 代…

基于python+django+vue的学生管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于协同过滤pythondjangovue…

Python编码系列—Python原型模式:深克隆与高效复制的艺术

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

C++的IO流(文件部分在这里)

1. C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键盘)读取数据&#xff0c;并将值存放在变量中。printf(): 将指定的文字/字符串输出到标准输出设备(屏幕)。 注意宽度输出和精度输出控制。C语言借助了相应的缓…

嵌入式开发—CAN通信协议详解与应用(上)

文章目录 1.CAN简介CAN协议的诞生背景CAN协议的发展历程CAN协议的影响CAN通信的主要特点 2.CAN数据帧的帧格式CAN标准数据帧的帧格式CAN标准数据帧的帧格式结构图CAN扩展帧的帧格式CAN遥控帧的帧格式CAN错误帧的帧格式 3.CAN数据传输中的位填充位填充的概念位填充的作用位填充的…