当前位置: 首页 > news >正文

数据处理与统计分析 —— numpy入门

目录

概述

属性

创建ndarray

zeros() /ones()/empty()

arange ()

matrix ()

创建随机数矩阵

转换数据类型

等比/等差数列

Numpy内置函数

基本函数

统计函数

比较函数

去重函数

排序函数

  • 概述

    • NumPy(Numerical Python)是Python数据分析必不可少的第三方库
  • 重要功能
    • 1. 高性能科学计算和数据分析的基础包
    • 2. ndarray,多维数组,具有矢量运算能力,快速、节省空间
    • 3. 矩阵运算,无需循环,可完成类似Matlab中的矢量运算
    • 4. 用于读写磁盘数据的工具以及用于操作内存映射文件的工具
  • 属性

  •  
    • ndarray.ndim 数组的维度,几维数组返回的就是几
    • ndarray.shape 返回几行几列
    • ndarray.size 返回元素个数
    • ndarray.dtype 返回元素类型
    • ndarray.itemsize 返回每个元素的字节数
      # 创建一个二维数组
      import numpy as np
      arr = np.array([[1,2,3],[4,5,6]])
      print(f"ndarray对象:{arr}")
      print(f"ndarray对象维度:{arr.ndim}")
      print(f"ndarray对象元素个数:{arr.size}")
      print(f"ndarray对象元素类型:{arr.dtype}")
  • 创建ndarray

  • 普通创建array()
    • import numpy as np
      arr = np.array([1.0,2.0,3.0,4.0,5.0])
      print(f"数组{arr}")
  • zeros() /ones()/empty()

  • 函数zeros()创建一个全是0的数组
    # zeros()函数创建全0数组
    import numpy as np
    arr = np.zeros((2,3))
    print(f"数组:\n{arr}")
  • 函数ones()创建一个全1的数组
    # ones()函数创建全1数组
    import numpy as np
    arr = np.ones((2,3))
    print(f"数组:\n{arr}")
    # ones()函数创建全1数组
    import numpy as np
    # 创建三维数组,2个数组,每个数组3行4列
    arr = np.ones((2,3,4)) 
    print(f"数组:\n{arr}")
    print(f"数组类型{type(arr)}")
    print(f"数组维度{arr.ndim}")
    print(f"数组元素个数{arr.size}")
    print(f"数组元素类型:{arr.dtype}")
    • 函数empty()创建一个内容随机并且依赖于内存状态的数组。
      • 默认创建的数组类型(dtype)都是float64
    • # empty()函数创建数组,内容随机,依赖内存状态的随机值
      import numpy as np
      arr = np.empty((2,3))
      print(f"数组:\n{arr}")
      print(f"数组类型{type(arr)}")
      print(f"数组维度{arr.ndim}")
      print(f"数组元素个数{arr.size}")
      print(f"数组元素类型:{arr.dtype}")
      

arange ()

        arange() 类似python 的 range() ,创建一个一维 ndarray 数组。

# 生成一个1到5的数组(不包含5),步长为2,数据类型为int32
import numpy as np
arr = np.arange(1,5,2,dtype=np.int32)  
print(f"数组:\n{arr}")
print(f"数组类型{type(arr)}")
print(f"数组维度{arr.ndim}")
print(f"数组元素个数{arr.size}")
print(f"数组元素类型:{arr.dtype}")

matrix ()

        matrix 是 ndarray 的子类,只能生成 2 维的矩阵

# matrix()创建一个矩阵
import numpy as np
arr = np.matrix('1 2;3 4')
arr2 = np.matrix('1,2;3,4')
arr3 = np.matrix([[1,2],[3,4]])
print(f"数组:{arr}")
print(f"数组:{arr2}")
print(f"数组:{arr3}")

        运行结果:

创建随机数矩阵

函数:rand(); randint(); uniform()

# rand()函数创建随机数矩阵(浮点数)
# 创建一个二维数组,2行3列,元素随机,范围0-1(规定)
import numpy as np
arr = np.random.rand(2,3) 
print(f"数组:\n{arr}")

# randint()函数创建随机数矩阵(整数)
import numpy as np# 创建一个二维数组,2行3列,元素随机,范围2-7
arr = np.random.randint(2,8,size=(2,3)) 
print(f"数组:\n{arr}")
print(f"数组类型{type(arr)}")
print(f"数组元素类型:{arr.dtype}")

# 随机生成矩阵(浮点数、范围可自定义)
import numpy as np
arr = np.random.uniform(1,5,size=(2,5))
print(f"数组:\n{arr}")
print(f"数组类型{type(arr)}")
print(f"数组元素个数{arr.size}")
print(f"数组元素类型:{arr.dtype}")

转换数据类型

import numpy as np
arr = np.random.uniform(1,5,size=(2,5))
print(f"数组:\n{arr}")
print(f"数组类型{type(arr)}")
print(f"数组元素类型:{arr.dtype}")arr1 = arr.astype(np.int32)
print(f"数组:\n{arr1}")
print(f"数组类型{type(arr1)}")
print(f"数组元素类型:{arr1.dtype}")

等比/等差数列

等比数列

# 等比数列
# a = np.logspace(0,0,10)
# 第一个1:起始值的指数(10⁰)
# 第2个10:结束值的指数(10⁰)
# 第3个10:生成10个数
import numpy as np
a = np.logspace(0,0,10)
print(a)

# 等比数列
# a = np.logspace(0,9,10,base = 2)
# 第1个0:起始值的指数
# 第2个9:结束值的指数
# 第3个10:生成10个数
# 第4个base = 2:指定生成数列的基数import numpy as np
a = np.logspace(0,9,10,base = 2)
print(a)

等差数列                                

# 第2个10:结束值
# 第3个10:生成10个数
a1 = np.linspace(0,10,10, endpoint= False) # 不包含结束值
"""
步长计算:(终止值 -起始值)/(元素的个数-1)=1.0
元素的计算:起始值 + 步长 *(索引值0~9)
1+1.0*0=1
1+1.0*1=2
1+1.0*2=3
"""
a2 = np.linspace(0,10,11, endpoint= True) # 包含结束值
"""
步长计算:(终止值 - 起始值)/(元素的个数)=(10-1)/10 =0.9
实际区间:数学表示为[1,10]
终点的计算:起始值 +步长*(元素的个数-1)=1+0.9*9=9.1
实际区间:[1,9.1)
元素的计算:起始值 +步长 *(索引值0~9)
1+0.9*0=1
1+0.9*1=1.9
1+0.9*2=2.8
1+0.9*9=9.1
"""
print(a1)
print(a2)

Numpy内置函数

基本函数

np.ceil(): 向上最接近的整数,参数是 number 或 array

np.floor(): 向下最接近的整数,参数是 number 或 array

np.rint(): 四舍五入,参数是 number 或 array

np.isnan(): 判断元素是否为 NaN(Not a Number),参数是 number 或 array

np.multiply(): 元素相乘,参数是 number 或 array

np.divide(): 元素相除,参数是 number 或 array

np.abs():元素的绝对值,参数是 number 或 array

np.where(condition, x, y): 三元运算符,x if condition else y

import numpy as np# 生成随机数组
arr = np.random.randn(2, 3)
print(f"原始数组:\n{arr}\n")# 取整操作
print(f"向上取整 (ceil):\n{np.ceil(arr)}\n")
print(f"向下取整 (floor):\n{np.floor(arr)}\n")
print(f"四舍五入 (rint):\n{np.rint(arr)}\n")# 特殊值检查
print(f"检查NaN值:\n{np.isnan(arr)}\n")# 数组运算
print(f"元素相乘 (multiply):\n{np.multiply(arr, arr)}\n")
print(f"元素相除 (divide):\n{np.divide(arr, arr)}\n")# 条件判断
print(f"条件赋值 (where):\n{np.where(arr > 0, 1, -1)}")

运行结果:

原始数组:
[[-0.77870842  1.6587777   1.09137868][ 0.54180519 -1.51279888  0.74223392]]向上取整 (ceil):
[[-0.  2.  2.][ 1. -1.  1.]]向下取整 (floor):
[[-1.  1.  1.][ 0. -2.  0.]]四舍五入 (rint):
[[-1.  2.  1.][ 1. -2.  1.]]检查NaN值:
[[False False False][False False False]]元素相乘 (multiply):
[[0.60638681 2.75154347 1.19110743][0.29355286 2.28856046 0.55091119]]元素相除 (divide):
[[1. 1. 1.][1. 1. 1.]]条件赋值 (where):
[[-1  1  1][ 1 -1  1]]

统计函数

np.mean(), np.sum():所有元素的平均值,所有元素的和,参数是 number 或 array
np.max(), np.min():所有元素的最大值,所有元素的最小值,参数是 number 或 array
np.std(), np.var():所有元素的标准差,所有元素的方差,参数是 number 或 array
np.argmax(), np.argmin():最大值的下标索引值,最小值的下标索引值,参数是 number 或 array
np.cumsum(), np.cumprod():返回一个一维数组,每个元素都是之前所有元素的 累加和 和 累乘积,参数是 number 或 array

import numpy as np
arr = np.arange(12).reshape(3,4) # 3行4列的二维数组
print(f"数组:{arr}")# 2: 演示cumsum(),累加和
print(f"累加和:{np.cumsum(arr)}") # 累加和:[ 0  1  3  6 10 15 21 28 36 45 55 66]# 3: 演示sum(), 所有元素的和
print(f"所有元素的和:{np.sum(arr)}") # 所有元素的和:66
print(f"所有元素的按列求和:{np.sum(arr, axis=0)}") # 所有元素的按列求和:[12 15 18 21]
print(f"所有元素的按行求和:{np.sum(arr, axis=1)}") # 所有元素的按行求和:[ 6 22 38]

运行结果:

比较函数

np.any(): 至少有一个元素满足指定条件,返回True
np.all(): 所有的元素满足指定条件,返回True

import numpy as np
arr = np.random.randn(2, 3)
print(f"数组:{arr}")print(f"至少有一个元素满足指定条件:{np.any(arr > 0)}")
print(f"所有的元素满足指定条件:{np.all(arr > 0)}")

运行结果:

去重函数

np.unique():找到唯一值并返回排序结果,类似于Python的set集合

import numpy as np
arr = np.array([[1, 2, 1, 6], [1, 3, 2,5]]) # 列数需要一致
print(f"数组:{arr}")# 2:去重
print(f"去重:{np.unique(arr)}")

运行结果:

排序函数

方式1:np.sort(arr):排序,并返回排序后的结果
方式2:arr.sort():排序,并修改原数组

import numpy as np
# 1:创建nparray对象
arr = np.array([1, 5, 3, 2, 6])
print(f"数组:{arr}")# 2: 排序
arr_new = np.sort(arr)
print(f"排序后的结果:{arr_new}")# 3:排序修改原数组
arr.sort() # 直接对原数组对象进行排序
print(f"排序后的结果:{arr}")

运行结果:

http://www.xdnf.cn/news/1307035.html

相关文章:

  • 《Attention-driven GUI Grounding》论文精读笔记
  • 【Spring Cloud 微服务】1.Hystrix断路器
  • 【LeetCode 热题 100】55. 跳跃游戏
  • @mcp.tool如何从函数定义映射到llm系统输入
  • 如何回答研究过MQ的源码吗
  • 【121页PPT】智慧方案智慧综合体智能化设计方案(附下载方式)
  • [优选算法专题二滑动窗口——长度最小的子数组]
  • Effective C++ 条款42:了解 typename 的双重含义
  • AutoSar AP平台中EM,CM,SM,PHM,LT等AP基础软件都有宿主进程吗
  • Lecture 10: Concurrency 3
  • linux-数据链路层
  • C语言笔记6:C高级 part1
  • 【160页PPT】机械行业数字化生产供应链产品解决方案(附下载方式)
  • 深入理解Transformer:从训练机制到长文本处理的核心问题
  • GoLand深度解析:智能开发利器与cpolar内网穿透的协同革命
  • Linux系统编程—Linux基础指令
  • Point-LIO技术文档中文翻译解析
  • Python爬取推特(X)的各种数据
  • 活侠传 送修改器 免安装中文版
  • 深入理解 Python 闭包:从原理到实践
  • UE UDP通信
  • 小白挑战一周上架元服务——装饰器
  • 【C++】缺省参数
  • Java调用bat执行python脚本
  • 基于多分类的工业异常声检测及应用
  • Redis 知识点与应用场景
  • Linux软件编程-进程(2)及线程(1)
  • AI加持下的智能路由监控:Amazon VPC Direct Connect实战指南
  • Python 数据可视化:柱状图/热力图绘制实例解析
  • mc paper 1.20.4