🤵♂️ 个人主页: @AI_magician
📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。
👨💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!🐱🏍
🙋♂️声明:本人目前大学就读于大二,研究兴趣方向人工智能&硬件(虽然硬件还没开始玩,但一直很感兴趣!希望大佬带带)
【深度学习 | 核心概念】那些深度学习路上必经的核心概念,确定不来看看? (一) 作者: 计算机魔术师 版本: 1.0 ( 2023.8.27 )
摘要: 本系列旨在普及那些深度学习路上必经的核心概念,文章内容都是博主用心学习收集所写,欢迎大家三联支持!本系列会一直更新,核心概念系列会一直更新!欢迎大家订阅
该文章收录专栏
[✨--- 《深入解析机器学习:从原理到应用的全面指南》 ---✨]
Numpy
Numpy 在数值运算上效率优于python内置的list, 所以熟练掌握是必要的。
Numpy主要分为两个核心部分,N维数组对象 Ndarry 和 通用函数对象 Ufunc, (一个数据结构,一个操作的算法)下面是关于NumPy库的各个常用模块
中文名称 | 英文名称 | 介绍 | 解决场景 |
---|---|---|---|
数组对象 | ndarray (N-dimensional array) | 多维数组对象,用于存储同类型的元素,支持矢量化操作和广播运算。 | 数值计算、线性代数、统计分析等 |
通用函数 | Universal Functions (ufunc) | 快速的元素级数组函数,对数组中的元素逐个进行操作,支持矢量化运算。 | 数值计算、数学运算、逻辑运算等 |
索引和切片 | Indexing and Slicing | 用于访问和修改数组中的元素,可以通过索引、切片和布尔掩码进行操作。 | 数据访问、数据修改、数据筛选等 |
广播 | Broadcasting | 对不同形状的数组进行自动的元素级运算,使得不同尺寸的数组可以进行计算。 | 处理形状不同的数组、矩阵运算等 |
线性代数 | Linear Algebra | 提供了线性代数运算的函数,如矩阵乘法、特征值分解、奇异值分解等。 | 线性代数计算、矩阵运算等 |
随机数 | Random Sampling (random) | 生成各种概率分布的随机数,包括均匀分布、正态分布、泊松分布等。 | 模拟实验、概率分析、随机抽样等 |
快速傅里叶变换 | Fast Fourier Transform (fft) | 提供了快速傅里叶变换算法,用于信号处理、图像处理和频谱分析等。 | 信号处理、频谱分析、图像处理等 |
文件输入输出 | File Input/Output (IO) | 读取和写入数组数据到磁盘文件,支持多种数据格式,如文本文件、二进制文件等。 | 数据存储、数据读取、数据导出等 |
结构化数组 | Structured Arrays | 创建和操作具有复合数据类型(结构体)的数组,可以指定字段名称和数据类型。 | 处理结构化数据、数据库操作等 |
掩码数组 | Masked Arrays | 在数组中使用掩码标记无效或缺失的数据,进行计算时可以自动忽略掩码元素。 | 缺失数据处理、数据过滤等 |
Ndarray
数组属性
当谈论NumPy数组的属性时,我们通常指的是数组对象本身的一些特征和元数据。下面是一些常见的NumPy数组属性及其说明,我将以Markdown表格的形式呈现给你。
名称 | 说明 |
---|---|
shape | 数组的维度,表示每个维度的大小。例如,(3, 4) 表示一个二维数组,有3行和4列。 |
dtype | 数组元素的数据类型,例如int64 、float32 、bool 等。 |
ndim | 数组的维度数量,也称为数组的秩。例如,二维数组的ndim为2。 |
size | 数组中元素的总数,等于各个维度大小的乘积。 |
itemsize | 数组中每个元素的字节大小。例如,int64 类型的元素占8个字节。 |
nbytes | 数组中所有元素的总字节数,等于itemsize * size 。 |
real | 复数数组的实部。对于实数数组,返回数组本身。 |
imag | 复数数组的虚部。对于实数数组,返回全零数组。 |
flat | 返回一个迭代器,用于以扁平化方式迭代数组中的元素。 |
strides | 表示在每个维度上需要移动多少字节来获取下一个元素。 |
data | 数组的缓冲区,包含数组的实际元素。 |
创建数组
当使用NumPy库处理数据时,有多种方法可以创建数组。下面是一些常用的方法,并以Markdown表格的形式列出它们的名称和说明:
名称 | 说明 |
---|---|
numpy.array() |
从列表、元组或其他数组对象创建一个NumPy数组。 |
numpy.zeros() |
创建一个指定形状的全零数组。 |
numpy.ones() |
创建一个指定形状的全1数组。 |
numpy.empty() |
创建一个指定形状的空数组,数组元素的值是未初始化的。 |
numpy.arange() |
根据指定的开始值、结束值和步长创建一个一维数组。 |
numpy.linspace() |
在指定的开始值和结束值之间创建一个一维数组,可以指定数组的长度。 |
numpy.logspace() |
在指定的开始值和结束值之间以对数刻度创建一个一维数组。 |
numpy.eye() |
创建一个具有对角线为1的二维数组,其他位置为0。 |
python
import numpy as np
# numpy.array()
arr = np.array([1, 2, 3]) # 参数: 输入的列表、元组或其他数组对象
# numpy.zeros()
zeros_arr = np.zeros((3, 3)) # 参数: 形状
# numpy.ones()
ones_arr = np.ones((2, 2)) # 参数: 形状
# numpy.empty()
empty_arr = np.empty((2, 2)) # 参数: 形状
# numpy.arange()
arange_arr = np.arange(0, 10, 2) # 参数: 开始值、结束值、步长
# numpy.linspace()
linspace_arr = np.linspace(0, 1, 5) # 参数: 开始值、结束值、数组长度
# numpy.logspace()
logspace_arr = np.logspace(0, 3, 4) # 参数: 开始指数、结束指数、数组长度
# numpy.eye()
eye_arr = np.eye(3) # 参数: 数组的大小
# numpy.random.rand()
rand_arr = np.random.rand(3, 3) # 参数: 形状
# numpy.random.randn()
randn_arr = np.random.randn(2, 2) # 参数: 形状
# numpy.random.randint()
randint_arr = np.random.randint(0, 10, (2, 2)) # 参数: 最小值、最大值、形状
# numpy.full()
full_arr = np.full((2, 2), 7) # 参数: 形状、填充值
# numpy.tile()
tile_arr = np.tile([1, 2], 3) # 参数: 数组、重复次数
# numpy.repeat()
repeat_arr = np.repeat([1, 2, 3], 3) # 参数: 数组、重复次数
🤞到这里,如果还有什么疑问🤞
🎩欢迎私信博主问题哦,博主会尽自己能力为你解答疑惑的!🎩
🥳如果对你有帮助,你的赞是对博主最大的支持!!🥳