NumPy数值计算

news2024/12/23 23:05:51

1、Numpy概念

1.1Numpy是什么?

  • Numpy是(Numerical Python的缩写):
  • 一个开源的Python科学计算库
  • 使用NumPy可以方便的使数组、矩阵进行计算
  • 包含线性代数、傅里叶变换、随机数生成等大量函数

1.2为什么使用Numpy

对于同样的数值计算任务,使用NumPy比直接编写Python代码实现,优点:

  • 代码更简洁:NumPy直接以数组、矩阵为粒度计算并且支持大量的数学函数,而Python需要用for循环从底层实现;
  • 性能更高效:NumPy的数组存储效率和输入输出计算性能,比Python使用List或者嵌套List好的多;
    注:(NumPy的数据存储和Python原生的List是不一样的)
    注:NumPy的大部分代码都是C语言实现的,这也是NumPy比纯Python代码效率高效的原因
     

NumPy是Python各种数据科学类库的基础库

  • 比如SicPy、Scikit-Learn、Tensorflow、PaddlePaddle等
  • 如果不会NumPy,这些库的深入理解都会遇到障碍 

1.3怎样安装NumPy?

  • 如果是安装的anaconda,则自带了NumPy

      Anaconda是Python最流行的一个已经集成了非常多类库的安装包;不论是学习、实验、线上部署,Anaconda当前都是使用Python的首选安装环境。

    官网路径:安装_Anaconda 中文网

  • 如果安装的是官网Python,则可以用pip安装 NumPy
    在命令行下使用 pip install numpy即可安装
  • 验证是否安装NumPy,进入Python命令行
    输入import  NumPy as np,如果没有报错则安装成功

2、ndarry对象 

        NumPy提供了两种基本对象,即ndarray(N-dimensional Array)对象和ufunc(Universal Function,即通用函数)对象。

  • ndarray是一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组;
  • ufunc则提供了对数组进行快速运算的标准数学函数。

2.1ndarray的创建与索引 

2.1.1创建ndarray

        在Numpy中,可以由函数array、arange、linspace、logspace、zeros、eye、diag及ones等创建ndarray。此外,NumPy还提供了随机数相关函数。

形状:
    1、reshape方法  用于改变ndarray的形状,不改变原始的数据值,不改变原来的ndarray的形状(本身不改变)
    2、resize方法   用于改变ndarray的形状,不改变原始的数据值,改变原来的ndarray的形状
    3、shape 通过修改ndarrray的shape属性也可以实现ndarray形状的更改,直接操作于ndarray本身
    4、展平:多维ndarray转化为一维ndarray的操作过程。
        (1)ravel:横向展平
        (2)flatten:既可以横向展平,也可纵向展平 例如:arr.flatten('F')  即为arr纵向展平
组合:
    1、横向组合:hstack
    2、纵向组合:vstack
    3、既支持横向组合有支持纵向组合:concatenate
                注: axis = 1 横向组合
                     axis = 0 纵向组合
    4、深度组合:dstack  会改变原有的ndarray的维度

分割:
    1、横向分割:hsplit   只适用于均等分割
    2、纵向分割:vsplit   只适用于均等分割
    3、既支持横向分割有支持纵向分割:split
                注: axis = 1 横向分割(按列分割)
                     axis = 0 纵向分割(按行分割)
    4、深度分割:dsplit
                条件:1.必须是三维数组
                      2.分割数目必须是shape属性中下标为2的值得公约数

 

'''
排序:
    NumPy的主要排序方式:直接排序   间接排序
        1、直接排序指对数值直接进行排序;
        2、间接排序是指根据一个或多个键对数据集进行排序。
    NumPy中的常用排序函数有sort、argsort和lexsort函数。
        1、sort函数:
            默认、axis=-1或者1,横轴排序
            当axis=None时,展平(底层调用了flatten方法)并排序
            当axis=0时,纵轴排序,不展平
        2、argsort和lexsort函数:
            返回的是元素下标

搜索:
    最大值:argmax  返回值:最大值元素的下标
    最小值:argmin  返回值:最小值元素的下标
    where(condition ,x,y)  类似于三元运算符 返回值:元素的下标
    condition  表达式
    x:true
    y:false
    extract函数  返回值:具体的元素
    arr = [[7 4 8 5]
           [7 3 7 8]
            [5 4 8 8]]
        例如:print(np.extract(arr>6,arr))
                ==[7 8 7 7 8 8 8]
'''

 

import numpy as np
# 随机种子
np.random.seed(42)
arr = np.random.randint(1,10,size=12).reshape(3,4)
print(arr)
print('默认的排序:\n',np.sort(arr))
# print('None排序:',np.sort(arr,axis=None))
print('默认(-1)的排序:\n',np.sort(arr,axis=-1))
print('1的排序:\n',np.sort(arr,axis=1))
# print('0的排序:\n',np.sort(arr,axis=0))

# print('None排序:',np.sort(arr,axis=None))
# print("原数组下标\n",np.argsort(arr ,axis=None))
# [[7 4 8 5] [7 3 7 8] [5 4 8 8]]
#   0 1 2 3   4 5 6 7   8 9 10 11

# arr1 = np.arange(0,12).reshape(3,4)
# print(arr1)
# print("最大值得索引:",np.argmax(arr))
# print("最小值得索引:",np.argmin(arr))
# 类似于三元运算符
# print(np.where(arr>6 ,arr,"false"))
# 花式索引
# where  返回的是下标
print(np.where(arr>6))
print(arr[[0, 0, 1, 1, 1, 2, 2],[0, 2, 0, 2, 3, 2, 3]])
# # extract  返回具体的元素
print(np.extract(arr>6,arr))

 

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

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

相关文章

Windows打开:控制面板\网络和 Internet\网络连接 显示空白怎么办?

Windows打开:控制面板\网络和 Internet\网络连接 显示空白怎么办? 最近有用户反馈遇到这个问题,问题产生原因:在卸载某个软件的时候,系统提示需要重新启动计算机,但是,启动之后,就…

前端项目练习(练习-002-NodeJS项目初始化)

首先,创建一个web-002项目,内容和web-001一样。 下一步,规范一下项目结构,将html,js,css三个文件放到 src/view目录下面: 由于html引入css和js时,使用的是相对路径,所以…

从聚水潭到金蝶云星空通过接口配置打通数据

从聚水潭到金蝶云星空通过接口配置打通数据 数据源平台:聚水潭 聚水潭SaaSERP于2014年4月上线,目前累计超过2.5万商家注册使用,成为淘宝应用服务市场ERP类目商家数和商家月订单增速最快的ERP。2014年及2015年“双十一”当天,聚水潭SaaSERP平稳…

python的讲解和总结V2.0

python的讲解和总结V2.0 一、Python的历史二、Python的特点三、Python的语法四、Python的应用领域五、Python的优缺点优点a. 简单易学:b. 可读性强:c. 库和框架丰富:d. 可移植性强:e. 开源: 缺点a. 运行速度较慢&#…

C 语言基础题:PTA L1-027 出租

下面是新浪微博上曾经很火的一张图: 一时间网上一片求救声,急问这个怎么破。其实这段代码很简单,index数组就是arr数组的下标,index[0]2 对应 arr[2]1,index[1]0 对应 arr[0]8,index[2]3 对应 arr[3]0&…

springboot 捕获数据库唯一索引导致的异常

在一些业务场景中,需要保证数据的唯一性,一般情况下,我们会先到数据库中去查询是否存在,再去判断是否可以插入新的数据.如果是在高并发的情况下,可能还是会出现重复的情况.这时候可能就需要用到锁.也可以在数据库中设置唯一索引. 如果使用唯一索引,在插入相同数据的情况下会抛出…

【postgresql】ERROR: column “xxxx.id“ must appear in the GROUP BY

org.postgresql.util.PSQLException: ERROR: column "xxx.id" must appear in the GROUP BY clause or be used in an aggregate function 错误:列“XXXX.id”必须出现在GROUP BY子句中或在聚合函数中使用 在mysql中是正常使用的,在postgre…

GAN笔记:利普希茨连续(Lipschitz continuity)

利普希茨连续(Lipschitz continuity)是一个数学概念,用于描述一个函数在其定义域内的变化程度。在生成对抗网络(GAN)中,利普希茨连续性对于鉴别器(Discriminator)的设计和训练具有重…

麻将技术从入门到高手,麻将听牌从基础到进阶

一、教程描述 本套麻将教程,大小8.82G,共有132个文件。 二、教程目录 麻将教程001-麻将的基本概念.mp4 麻将教程002-数牌的特性.mp4 麻将教程003-好坏搭判断.mp4 麻将教程004-拆搭原则.mp4 麻将教程005-听牌攻略.mp4 麻将教程006-进程判断.mp4 …

MySQL高级语句(第二部分)

MySQL高级语句(第二部分)一、视图表 create view1、视图表概述2、视图表能否修改?(面试题)3、基本语法3.1 创建3.2 查看3.3 删除 4、通过视图表求无交集值 二、case语句三、空值(null) 和 无值(’ ) 的区别四、正则表达式五、存储过程1、简介…

【LeetCode热题100】--238.除自身以外数组的乘积

238.除自身以外数组的乘积 思路: 利用索引左侧所有数字的乘积和右侧所有数字的乘积(即前缀和后缀)相乘得到答案 算法: 1.初始化两个空数组L和R,对于给定索引i,L[i]代表的是i左侧所有数字的乘积&#xff…

基于springboot会员制医疗预约服务管理信息系统springboot017

大家好✌!我是CZ淡陌。一名专注以理论为基础实战为主的技术博主,将再这里为大家分享优质的实战项目,本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路…

2023最新PS(photoshop)Win+Mac免费下载安装包及教程内置AI绘画-网盘下载

2023最新PS(photoshop)WinMac免费下载安装包及教程内置AI绘画-网盘下载 2023最新PS(photoshop)免费下载安装教程来咯~ 「PhotoShop」全套,winmac: https://pan.quark.cn/s/9d8d8ef5c400#/list/share 所有版本都有 1,复制链接…

高并发下双重检测锁DCL指令重排问题剖析

文章目录 一、引言1.1 双重检查锁定(Double-Checked Locking,简称DCL)定义介绍1.2 高并发环境下DCL的应用和优势 二、DCL存在的问题2.1 DCL的代码示例2.2 指令重排的定义和工作原理2.3 指令重排导致DCL失效的情况分析 三、深入分析指令重排和…

「大数据-2.1」HDFS集群启停命令

目录 一、HDFS集群一键启停脚本 1. HDFS集群的一键启动脚本 2. HDFS集群的一键关闭脚本 二、单进程启停 1. hadoop-daemon.sh脚本 2. hdfs脚本 三、总结 1. 一键启停脚本 2. 独立进程启停 一、HDFS集群一键启停脚本 Hadoop HDFS组件内置了HDFS集群的一键启停脚本。 1. HDFS集群…

JavaScript 期约 Promise 总结

同步与异步的概念 JavaScript 是一门单线程的语言,这意味着它在任何给定的时间只能执行一个任务。 然而,JavaScript 通过异步编程技术来处理并发操作,以避免阻塞主线程的情况。 在上图中,同步行为的进程 A 因为等待进程 B 执行完…

深入浅出Java的多线程编程——第一篇

目录 1. 认识线程(Thread) 1.1 概念 1.1.1 线程是什么 1.1.2 为啥需要线程 1.1.3 进程和线程的区别 1.1.4 Java的线程和操作系统线程的关系 1.2 第一个多线程程序 1.3 创建线程的方式(5种) 1.3.1 继承Thread类 1.3.2 实现…

电脑开机慢问题的简单处理

电脑用久了,开机时间要10-20分钟特别慢,一下介绍两种简单有效处理方式,这两种方式经测试不会影响原系统软件的使用: 方式一:禁用非必要启动项【效果不是很明显】 利用360里面的优化加速禁用启动项【禁用启动项还有其…

红色模板和黑色模板的区别

红色建筑模板和黑色建筑模板是常见的建筑支模材料,它们在颜色、材料、性能和适用范围等方面存在显著的区别。下面将详细介绍这两种建筑模板的区别。 首先,红色建筑模板通常由胶合板或其他木材制成,外观呈红色,而黑色建筑模板则采用…

MySQL数据库入门到精通6--进阶篇(锁)

5. 锁 5.1 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决…