当前位置: 首页 > 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.dtcms.com/a/333861.html

相关文章:

  • @mcp.tool如何从函数定义映射到llm系统输入
  • Kotlin作用域函数全解:run/with/apply/let/also与this/it的魔法对决
  • LORA模块的通讯速率(915Mhz)以及通道数量规划
  • 图片滤镜处理(filters)
  • 【机器学习深度学习】生成式评测
  • 数据处理分析环境搭建+Numpy使用教程
  • Design Compiler:使用IC Compiler II Link
  • PCA降维 提升模型训练效率
  • CUDA TensorRT Python智能提示补全解决方案
  • MySQL约束知识点
  • iceberg 底层存储HDFS与juiceFS的区别
  • epoll发数据学习
  • 自己开发的VIP monitor通过TLM port口连接到RefenceModel 但是get不出transaction的问题
  • 《中国棒球知识科普》国家级运动健将标准·棒球1号位
  • 力扣(接雨水)——标准双指针
  • 最长链(二叉树直径DFS)
  • 【学习笔记】NTP服务客户端配置
  • 医疗领域名词标准化工具
  • 二分算法(模板)
  • Vue插槽---slot详解
  • RAGFlow入门
  • 大麦APP抢票揭秘
  • 亚马逊新品推广的智能突围:从传统SP广告到DeepBI策略革新
  • 结合项目对AOP的实践和理论讲解-AOP八股
  • 第十四节:物理引擎集成:Cannon.js入门
  • Windows Server Core智能调优
  • 智能体开发实战:用Deepseek做一个生成思维导图的智能体
  • SSH协议的GIT转换
  • 访问者模式C++
  • Day55 Java面向对象09 super关键字详解