• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
汜水
博客园    首页    新随笔    联系   管理    订阅  订阅

numpy学习

Numpy介绍

numpy是Python中科学计算的基础包
它是一个 Python 库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/O、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。
numpy 的部分功能如下:

  • ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。
  • 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。
  • 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。
  • 线性代数、随机数生成以及傅里叶变换功能。
  • 用于集成由 C、C++、Fortran 等语言编写的代码的 API。

1.ndarray的核心特性

  • 多维性:支持 0 维 (标量)、1 维 (向量)、2 维 (矩阵) 以及更高维数组(图像常用三维)

创建了一个0维的ndarray数组:

import numpy as np
arr = np.array(5)
print('arr的维度:',arr.ndim) # 输出0 数组的维度number of dimensions

  • 同质性:数组内所有元素数据类型一致,由 dtype 指定;Python 列表元素类型可以不同

  • 高效性:内存连续存储;支持向量化运算,无需 for 循环,运算速度优于普通 list

2.ndarray的属性

常用:

  1. shape:数组形状(行数、列数 / 高维尺寸),示例arr.shape
  2. ndim:数组维度数量(几维数组),示例arr.ndim
  3. size:数组总元素个数,示例arr.size
  4. dtype:数组内元素的数据类型(整数、浮点数等),示例arr.dtype

代码示例:

arr = np.array([[1,2,3],[4,5,6]])
print('数组的形状:',arr.shape,'数组的维度:'arr.ndim,'元素的个数:'arr.size)# 输出:数组的形状:(2,3),数组的维度:2,元素的个数:6

3.ndarray的创建

  • 基础构造:手动构建小规模数组、复制已有数据
  • 预定义形状填充:快速初始化数组(全 0、全 1 占位初始化)
  • 基于数值范围生成:生成数值序列;用于时间序列、坐标网格
  • 特殊矩阵生成:面向数学运算,如线性代数的单位矩阵
  • 随机数组生成:模拟实验数据、初始化神经网络权重
  • 高级构造方法:读取文件、字符串等非结构化数据;函数生成复杂数组
    image

基础的创建方法:

arr = np.array([1,2,3])
print(arr)
# copy
arr1 = np.copy(arr) #元素跟原始的数组相同,但是不是一个数组了

预定义形状

# 全0
arr = np.zeros((2,3),dtype = int)
print(arr) #输出:[[0 0 0][0 0 0]]
类似地:
# 全1
arr = np.ones((2,3),dtype = int)

# 未初始化
arr = np.empty((2,3)) #每次输出的值随机产生

基于数值范围生成

# 等差数列 2 4 6 8 10
arr = np.arange(2,10,2) # start,end,step(步长)
print(arry) # 输出:[2 4 6 8]

# 等间隔数列
arr = np.linspace(1,10,5) # start,end,num(从start->end中取num份)
print(arr) # 输出:[1. 3.5 5.5 7.75 10.]

# 对数间隔数列
arr = np.logspace(0,4,2,base=2) # 与linspace类似,base是从取出来的数做底数

特殊矩阵生成

# 单位矩阵:主对角线上的数字为1,其余为0
arr = np.eye(3,dtype=int)
print(arr) # 输出:image

# 对角矩阵:主对角线上非零,其余为0
arr = np.diag([1,2,3])
print(arr) # 输出:image

# 随机数组的生成
# 生成0到1之间的随机浮点数(均匀分布)
arr = np.random.rand(2,3)
print(arr) # 输出:image
# 生成指定范围区间的随机浮点数
arr = np.random.uniform(3,6,(2,3)) # 生成一个3-6之间的随机浮点数,2*3的矩阵
# 生成指定范围区间的随机整数
arr = np.random.randint(3,6,(2,3)) # 生成一个3-6之间的随机整数数,2*3的矩阵

# 生成随机数列(正态分布)
arr = np.random.randn(2,3)

# 设置随机种子
np.random.seed(20)
arr = np.random.randint(1,10,(2,5)) # 每次运行得到一样的随机数
print(arr) # 输出:image

4.ndarray的数据类型

image

5.ndarray索引与切片

image

一维数组的索引与切片

arr = np.random.randint(1,100,20)
print(arr) # 输出:image
print(arr[0]) # 输出:70
print(arr[:]) # 获取全部的数据
print(arr[2:5])等价 print([slice(2,5)]) # 检索58到96,左闭右开
print(arr[arr>10]) # 布尔索引 检索所有比10大的数据

二维数组的索引与切片

arr = np.random.randint(1,100,(4,8))
print(arr) # 输出:image
print(arr[1,3]) # 输出:98 检索第一行第三列的数据
print(arr[1,2:5]) # 输出:[61 98 3] 检索第一行中从第二列开始到第四列的数据

6.ndarray的运算

算数运算

a = np.array([1,2,3])
b = np.array([4,5,6])
print(a + b) # 输出:[5 7 9]
注:原生python使用+运算则会拼接

a = np.array([1,2,3],[4,5,6],[7,8,9])
print(a + 3) #数组与标量相加时会与每一个元素进行计算

广播机制

a = np.array([1,2,3]) #1*3
b = np.array([[4],[5],[6]]) #3*1
print(a+b) # 输出:image

矩阵运算

a = np.array([1,2,3],[4,5,6],[7,8,9])
b = np.array([4,5,6],[7,8,9],[1,2,3])
print(a * b) # 输出:image
print(a @ b) # 矩阵乘法 输出:image

7.Numpy常用函数

基本数学函数

image

统计函数

image

比较相关函数

image

去重相关

image

其他数组操作

image

排序相关

image

posted on 2026-09-16 19:11  汜水  阅读(3)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3