NumPy数值计算

2023-09-20 09:43:08

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))

 

更多推荐

企业怎么优化固定资产管理

在优化固定资产管理的过程中,不仅要关注硬件设备和设施的维护,还要重视软件系统和数据管理。一些可能的方法:需要建立一套完整的资产管理系统。这个系统应该包括资产的采购、登记、使用、维修、报废等各个环节的管理流程。通过这个系统,可以实时了解每个资产的状态,及时发现并解决潜在的问题。应该对固定资产进行定期的盘点和维护。这不仅可

PostgreSQL 排查慢 SQL

文章目录前言1.日志参数设置2.pg_stat_statements插件2.1确认是否安装插件2.2编译插件2.3载入插件2.4插件使用3.慢SQL排查手段3.1查询当前会话3.2查看TOPSQL前言所谓慢SQL是指在数据库中执行时间超过指定阈值的语句。慢查询太多,对于业务而言,是有很大风险的,可能随时都会因为某种原因

使用Git把项目上传到Gitee的详细步骤

1.到Git官网下载并安装2.到Gitee官网进行注册,然后在Gitee中新建一个远程仓库3.设置远程仓库的参数4.返回Gitee查看仓库是否生成成功5.新建一个文件夹作为你的本地仓库6.将新建好的文件夹初始化成本地仓库第一步:右键点击刚创建的本地仓库,然后点击GitBashHere第二步:在命令行里输入gitinit

八、【漏洞复现】jupyter-notebook 命令执行(CVE-2019-9644)

8.0、基础知识1、测试功能点(这种情况基本上很难遇到)8.1、漏洞原理​JupyterNotebook是一套用于创建、共享代码和说明性文本文档的开源Web应用程序。JupyterNotebook可直接使用命令行执行任意命令。​8.2、影响范围未授权开启终端权限的系统8.3、指纹识别1.有主页与明显logo主页:log

常见web漏洞原理整理

文章目录一、SQL注入1.1SQL注入漏洞原理1.2SQL注入的两个关键点1.3与Mysql注入相关的知识点1.4SQL注入的主要分类1.5SQL注入的流程1.5.1普通SQL注入1.5.2盲注1.6SQL注入总结二、文件上传2.1文件上传漏洞原理2.2客户端检测及绕过(JS检测与绕过)2.3服务端检测2.3.1后缀名

力扣常见算法题

LeetCode上的问题可以有很多不同的解题思路,具体的解法取决于问题的要求和限制条件。以下是一些常见的解题思路和Python代码示例:文章目录思路1.暴力法(BruteForce):2.哈希表(HashTable):3.双指针(TwoPointers):4.动态规划(DynamicProgramming):例题1.两

【第43篇】CLIP:从自然语言监督中学习可迁移的视觉模型

摘要最先进的计算机视觉系统被训练来预测一组固定的预定对象类别。这种受限制的监督形式限制了它们的通用性和可用性,因为需要额外的标记数据来指定任何其他视觉概念。直接从有关图像的原始文本中学习是一种很有前途的替代方案,它利用了更广泛的监督来源。我们证明了预测哪个标题与哪个图像搭配的简单预训练任务是一种有效且可扩展的方式,可以

华纳云:Ubuntu中怎么配置lamp环境

LAMP(Linux、Apache、MySQL、PHP)是一种常用于搭建Web服务器的开发环境。在Ubuntu中配置LAMP环境相对简单,以下是配置的基本步骤:安装ApacheWeb服务器:打开终端,运行以下命令安装Apache:sudoaptupdatesudoaptinstallapache2安装完成后,启动Apa

使用 PyTorch 的计算机视觉简介 (3/6)

一、说明在本单元中,我们将了解卷积神经网络(CNN),它是专门为计算机视觉设计的。卷积层允许我们从图像中提取某些图像模式,以便最终分类器基于这些特征。二、卷积神经网络计算机视觉不同于通用分类,因为当我们试图在图片中找到某个物体时,我们正在扫描图像以寻找一些特定的图案及其组合。比如在寻找猫的时候,我们首先可能会寻找水平线

​重生奇迹MU魔剑士玩转攻略​

大家都知道重生奇迹MU中有很多职业,比如魔法师、弓箭手、剑士等等,并且后续版本又推出了其他职业。根据职业加点不同又有很多方向,像魔剑士便是剑士的一个发展分支。如何玩好奇迹魔剑士?那么玩魔剑士应该怎么玩呢,我们玩家应该怎么去好游戏之中的魔剑士呢,在加点方面需要注意什么呢,这些问题对于每一个玩家都应该思考一下。如果玩家想要

绘图(一)弹球小游戏

AWT编程·语雀仓库:Java图形化界面:Java图形化界面学习demo与资料(gitee.com)很多程序如各种小游戏都需要在窗口中绘制各种图形,除此之外,即使在开发JavaEE项目时,有时候也必须"动态"地向客户端生成各种图形、图表,比如图形验证码、统计图等,这都需要利用AWT的绘图功能。组件绘图原理之前我们已经学

热文推荐