首页 > 其他分享 >超详细的Numpy基础教程!!!

超详细的Numpy基础教程!!!

时间:2024-03-12 20:58:50浏览次数:26  
标签:arr 详细 print 数组 基础教程 np array Numpy

Numpy是一个开源的Python库,用于支持大型多维数组和矩阵运算,同时提供了大量的数学函数库。它是科学计算中非常重要的工具。Numpy在数据科学中非常重要,因为它提供了高效的数组处理能力和广泛的数学函数库,这对于处理大规模数据集、进行科学计算和机器学习等任务至关重要。

一、安装与设置

  • 如何安装Numpy
    pip install numpy
  • 验证安装的方法
    import numpy
    print(numpy.__version__)
    

二、Numpy数组基础 

  • 。创建数组: Numpy允许使用array函数从列表创建数组
    import numpy as np
    arr = np.array([1, 2, 3])
    
  • 数组的属性:数组有多个属性,如shape(形状)、size(大小)和dtype(数据类型)。
    print(arr.shape)  # 输出数组的形状
    print(arr.size)   # 输出数组中元素的总数
    print(arr.dtype)  # 输出数组元素的数据类型
    
  • 索引与切片:可以通过索引访问数组中的元素,或使用切片来访问子数组。
    print(arr[0])       # 输出第一个元素
    print(arr[-1])      # 输出最后一个元素
    print(arr[0:2])     # 输出前两个元素
    

    三、数组操作

  • 数组的形状改变:使用reshape方法可以改变数组的形状,而不改变其数据。
    import numpy as np
    arr = np.array([1, 2, 3, 4, 5, 6])
    new_arr = arr.reshape(2, 3)
    print(new_arr)
    
  • 数组的堆叠与分割:
  • 堆叠:stack函数可以沿着新的轴加入一系列的数组。
    a = np.array([1, 2, 3])
    b = np.array([4, 5, 6])
    c = np.stack((a, b))
    print(c)
    
  • 分割:split函数可以将一个数组分割成多个子数组。
    d = np.array([1, 2, 3, 4, 5, 6])
    e, f = np.split(d, [3])
    print(e)
    print(f)
    

    这会将数组d在第三个元素处分割成两个子数组ef

  • 数组的广播:广播是Numpy中的一个强大特性,它允许不同形状的数组进行数学运算。
    g = np.array([1, 2, 3])
    h = 2
    print(g * h)
    

    即使h不是数组,Numpy也会将其扩展到与g相同的大小,并执行逐元素乘法。

 四、数学运算

  • 基本数学函数: Numpy提供了许多数学函数,如加法、减法、乘法和除法。
    import numpy as np
    a = np.array([1, 2, 3])
    print(np.add(a, 1))  # 对数组每个元素加1
    print(np.subtract(a, 1))  # 对数组每个元素减1
    
  • 线性代数运算: Numpy支持多种线性代数运算,如矩阵乘法和求解线性方程组。
    b = np.array([[1, 2], [3, 4]])
    c = np.array([[5, 6], [7, 8]])
    print(np.dot(b, c))  # 矩阵乘法
    
  • 统计方法: Numpy提供了一系列统计方法,用于计算平均值、中位数、标准差等。
    d = np.array([1, 2, 3, 4, 5])
    print(np.mean(d))  # 计算平均值
    print(np.median(d))  # 计算中位数
    print(np.std(d))  # 计算标准差
    

    五、高级特性

  • 掩码数组:掩码数组是Numpy中的一种特殊数组,它可以让你隐藏或“掩码”数组中的某些数据。
    import numpy as np
    arr = np.array([1, 2, 3, -1, -2, -3])
    mask = arr < 0
    print(arr[mask])  # 只显示小于0的元素
    
  • 结构化数组:结构化数组允许你定义一个数组,其中每个元素都可以是不同类型的字段。
    structured_arr = np.array([(1, 'First', 0.5), (2, 'Second', 1.3)],
                              dtype=[('id', 'i4'), ('position', 'a6'), ('value', 'f4')])
    print(structured_arr[0]['position'])  # 输出第一个元素的'position'字段
    

    六、实例:使用Numpy解决问题

    • 实际案例:假设你是数据分析师,需要分析一组股票价格的数据,找出价格最高的股票和计算所有股票价格的平均值。
    • 1.数据准备: 首先,我们创建一个包含股票价格的Numpy数组。
      import numpy as np
      stock_prices = np.array([120.5, 90.3, 45.8, 150.1, 180.4])
      
    • 2.分析:找出价格最高的股票:
      max_price = np.max(stock_prices)
      max_index = np.argmax(stock_prices)
      print(f"最高股票价格为:{max_price}, 位于索引:{max_index}")
      

      计算所有股票价格的平均值:

      average_price = np.mean(stock_prices)
      print(f"股票价格的平均值为:{average_price}")
      

      运行上述代码,你将得到最高股票价格及其索引位置,以及所有股票价格的平均值。

    • 当然,这只是一个非常简单的运用Numpy的小案例,想实现其他功能可以根据自己的需要运用Numpy库。

标签:arr,详细,print,数组,基础教程,np,array,Numpy
From: https://blog.csdn.net/m0_73673163/article/details/136662112

相关文章

  • 获取用户详细信息(2024-3-12)
    //在userController中,写好控制类@GetMapping("userInfo")publicResult<Object>userInfo(@RequestHeader(name="Authorization")Stringtoken){Map<String,Object>map=JwtUtil.parseToken(token);Stringusername......
  • OPPO 后端面试凉经(附详细参考答案)
    这篇文章的问题来源于一个读者之前分享的OPPO后端凉经,我对比较典型的一些问题进行了分类并给出了详细的参考答案。希望能对正在参加面试的朋友们能够有点帮助!JavaString为什么是不可变的?publicfinalclassStringimplementsjava.io.Serializable,Comparable<String>,C......
  • 三、jsPlumb实现流程图配置--Endpoint详细参数
    一、前言基于上一篇文章中已经搭建好的jsPlumb项目,在此篇文章中演示Endpoint的一些参数以及参数的效果。二、Endpoint创建在一个节点上创建Endpoint有三种方式://方式一:直接使用字符串指定类型。注意:大小写敏感//圆点形constendpoint1=jsPlumb.value.addEndpoint......
  • 手撕MIPI详细版
     平台:xilinxA775t+ov5640完整地址:NoNounknow/OV5640_MIPI_DDR3_HDMI:MIPI格式5640;1080P@30配置;输入无IP手写解析;(github.com)`timescale1ns/1psmoduleMipi_camera_top#(Mipi_Lane_Num=2)(inputwireI_Top_Rst_n......
  • 面试中超详细的HTTP状态码
    一状态码定义 二遵守的规范 200一定是正确。所有异常都不使用200返回码业务逻辑上的错误,有特别的错误码尽量使用4xx,否则使用400。服务器端内部错误,无特别错误码使用500。业务异常时,返回内容使用JSON格式定义error信息。......
  • H265 NALU类型详细解析
    1.H265NALU类型解析F:禁止位,必须为0,表示有效;为1的话表示无效。Type:6-bitsNALType确定NAL的类型,其中VCLNAL和non-VCLNAL各有32类。0-31是vclnal单元;32-63,是非vclnal单元。VCL是指携带编码数据的数据流,而non-VCL则是控制数据流。vclnal单元的类型(0-31)如下表: no......
  • 详细解读Gitlab Runner中SSH到远程服务器的细节
    生成特有的密钥对用windows的命令行生成即可$ssh-keygen-trsa-C"[email protected]"执行如下图:上述命令行中,密钥保存在C:\Users\d211.ssh目录下:把上述公钥拷贝到目标服务器的对应用户目录下比方我们要在目标服务器,用上述私钥,以用户runner的身份登入。那么我们在目标......
  • ModbusTCP协议报文详细分析
    ModbusTCP与ModbusUDP的报文格式是一样的,它们之间的区别其实就是TCP与UDP的区别,因此下面就针对ModbusTCP的协议进行分析,ModbusTCP与ModbusRtu(ModbusASCII)之间的区别如下图:从上图可以看出,ModbusTCP在Modbus串行通信的基础上,去除了校验(由于TCP本身就带有校验和)和设备地址(M......
  • C/C++结构体最详细的讲解
    转载自知乎:https://zhuanlan.zhihu.com/p/6117720311.定义结构体法一(推荐,写法简单)structStudent{stringm_Name;intm_Age;Student()=default;Student(stringname,intage):m_Name(name),age(m_Age){}};一般定义结构体和类时,如果不写关于构造函数的任何东西,结构......
  • CentOS7安装python3详细教程
    1.检查CentOS7自带python环境centos一般自带Python2,先使用python-V来查看python版本建议大家在保留python2的基础上安装一个python3,因为python2和python3还是有一些区别的,同时安装python2和python3的环境,以便不时之需或者对比学习。如果想要删除原有的python环境,可以通过下面......