【Python数据分析】Numpy总结

目录

一、学前安装

[二、 Numpy使用](#二、 Numpy使用)

[2.1 numpy介绍:](#2.1 numpy介绍:)

[2.2 ndarray](#2.2 ndarray)

[创建一维数组 和 二维数组](#创建一维数组 和 二维数组)

创建一个数组和复制(copy)一个数组

[数组形状设置行列数 以及填充内容 np.zeros() 和 np.ones()](#数组形状设置行列数 以及填充内容 np.zeros() 和 np.ones())

[np.empty() 进行快速构建, 但是数组内容都是随机值](#np.empty() 进行快速构建, 但是数组内容都是随机值)

[np.full 指定进行填充满;](#np.full 指定进行填充满;)

[np.zeros_like(); 创建形状一样 但是全填充0](#np.zeros_like(); 创建形状一样 但是全填充0)

[np.full_like (arr, 2); 指定填充](#np.full_like (arr, 2); 指定填充)

[np.arange(start, end, temp)等差数列](#np.arange(start, end, temp)等差数列)

[np.linspace(start, end, temp) # 把前面数字均匀分成temp 等份 其中start 跟 end是左闭 右闭](# 把前面数字均匀分成temp 等份 其中start 跟 end是左闭 右闭)

[np.logspace(a, b, n, base = k) 对数间隔数列](#np.logspace(a, b, n, base = k) 对数间隔数列)

[生成单位矩阵 和 对角矩阵](#生成单位矩阵 和 对角矩阵)

[生成随机数 np.random.rand()](#生成随机数 np.random.rand())

生成随机浮点数

生成随机整数

生成随机数正太分布

设置随机数种子

[ndarray 的数据类型](#ndarray 的数据类型)

[一维数组 的索引与切片](#一维数组 的索引与切片)

二维数组的索引与切片

ndarray的运算

[原始列表就不可以直接向numpy一样相加 否则就是拼接了](#原始列表就不可以直接向numpy一样相加 否则就是拼接了)

二维矩阵运算

广播机制

[矩阵相乘 a @ b](#矩阵相乘 a @ b)

算术平方根

[计算指数 e^x np.exp()](#计算指数 e^x np.exp())

[计算自然对数 lnX np.log()](#计算自然对数 lnX np.log())

[计算正弦值 和 余弦值 np.sin() 和 np.cos()](#计算正弦值 和 余弦值 np.sin() 和 np.cos())

[计算绝对值 np.abs([])](#计算绝对值 np.abs([]))

[计算a的b次幂 np.power([], 3)](#计算a的b次幂 np.power([], 3))

[四舍五入 但是.5 在python中会舍掉 np.round([])](#四舍五入 但是.5 在python中会舍掉 np.round([]))

[向上 和 向下取整 np.ceil([]) 和 np.floor([])](#向上 和 向下取整 np.ceil([]) 和 np.floor([]))

检测缺失值np.isnan([])

统计函数

[数组求和 np.sum([])](#数组求和 np.sum([]))

计算平均值np.mean([])

[计算中位数 排序后中间的数](#计算中位数 排序后中间的数)

计算标准差(np.std([]))和方差(np.var([]))

[计算最大值和最小值max([]) min([])](#计算最大值和最小值max([]) min([]))

[计算分位数(np.percentile([], 25)) 和 中位数(np.median([]))](#计算分位数(np.percentile([], 25)) 和 中位数(np.median([])))

[计算累积和(np.cumsum([])) 累积积(np.cumprod([]))](#计算累积和(np.cumsum([])) 累积积(np.cumprod([])))

[是否大于(np.greater([], 4))、小于(np.less([], 4))、等于(np.eqaul([]), 4)](#是否大于(np.greater([], 4))、小于(np.less([], 4))、等于(np.eqaul([]), 4))

[逻辑与或非(np.logical_and([], []); np.logical_or([], []); np.logical_not([[]))](#逻辑与或非(np.logical_and([], []); np.logical_or([], []); np.logical_not([[])))

[检查元素是否至少有一个为true (np.any([]))检查是否全部元素为true (np.all([]))](#检查元素是否至少有一个为true (np.any([]))检查是否全部元素为true (np.all([])))

[自定义条件(np.where(条件, 符合条件, 不符合条件))](#自定义条件(np.where(条件, 符合条件, 不符合条件)))

[np.where() 可以进行嵌套](#np.where() 可以进行嵌套)

[np.select() 可以达到跟np.where()嵌套之后相同的效果](#np.select() 可以达到跟np.where()嵌套之后相同的效果)

[排序函数 arr.sort() 或者 np.sort(arr)](#排序函数 arr.sort() 或者 np.sort(arr))

[去重函数 可以用作找唯一值 np.unique(arr)](#去重函数 可以用作找唯一值 np.unique(arr))

[数组的水平拼接 np.concatenate(arr1, arr2)](#数组的水平拼接 np.concatenate(arr1, arr2))

[数组的分割 np.split(arr, [6, 12, 18]) 在[6, 12, 18] 里面进行下刀](#数组的分割 np.split(arr, [6, 12, 18]) 在[6, 12, 18] 里面进行下刀)

[可以将一维数组 转换成二维数组; 也可以进行数组的垂直拼接!!](#可以将一维数组 转换成二维数组; 也可以进行数组的垂直拼接!!)

[调整数组的形状 np.reshape(arr, [4, 5]) 必须要进行等分 每一行的个数都要相等](#调整数组的形状 np.reshape(arr, [4, 5]) 必须要进行等分 每一行的个数都要相等)

综合练习


素材已经上传只Gitee仓库, 需要自取:https://gitee.com/liu-yihao-hhh/learning-python/tree/master/python%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90https://gitee.com/liu-yihao-hhh/learning-python/tree/master/python%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90

一、学前安装

  1. 下载anaconda Navigator
  1. 在anaconda Navigator 中 下载jupyter 安装pycharm
  1. 打开pycharm选择创建jupyter 文件即可。
  1. 第一个jupyter程序, 写好就可以运行了!

二、 Numpy使用

2.1 numpy介绍:

说人话就是:

"Python 版的高级计算器 + 数据容器":

它主要是提供了一个叫 "多维数组" 的东西(比如列表的升级版,能存表格、矩阵这类复杂数据),还带了一堆现成的功能:能快速算数学题、排数据、处理文件,甚至能做线性代数、傅里叶变换这些复杂运算,连随机数生成都能直接用。

最方便的是,用它不用自己写循环,直接就能对整堆数据做计算,还能和 C、C++ 写的代码配合用,又快又省内存。

2.2 ndarray

2.2.1 Numpy 数组(ndarray)的核心特点就是:

  1. 能存复杂数据:不仅能存单个数字、一串数字,还能存表格、三维模型数据这类多层结构;
  2. 里面东西得一样:数组里要么全是数字,要么全是字符串,不能混着来;
  3. 用起来又快又省空间:数据存在连续的内存里,算的时候不用一个个循环,能一次性对一堆数据做运算。
创建一维数组 和 二维数组

2.2.2 同质性:会强制类型转换 只让数组内都是同一种类型的数据

2.2.3 ndarray属性

属性名称 通俗解释 使用示例
shape 数组的形状:行数和列数(或更高维度的尺寸)。 arr.shape
ndim 维度数量:数组是几维的(1 维、2 维、3 维等)。 arr.ndim
size 总元素个数:数组中所有元素的总数。 arr.size
dtype 元素类型:数组中元素的类型(整数、浮点数等)。 arr.dtype
T 转置:行变列,列变行。 arr.T
itemsize 单个元素占用的内存字节数。 arr.itemsize
nbytes 数组总内存占用量:size * itemsize。 arr.nbytes
flags 内存存储方式:是否连续存储(高级优化)。 arr.flags

2.2.4 ndarray 的创建

  1. 基础构造:手动攒小数据组,或者复制现成的数据。
  2. 预定义形状填充:快速弄个固定大小的数组(比如全填 0 占位置,或全填 1 当初始值)。
  3. 基于值范围生成:按顺序生成一串数,比如模拟时间、画坐标网格时用。
  4. 特殊矩阵生成:专门用来做数学计算的数组(比如那种 "对角线是 1、其他是 0" 的矩阵)。
  5. 随机数组生成:造一堆随机数,比如模拟实验数据、给 AI 模型初始化参数时用。
  6. 高级构造方法:处理文件、字符串这类乱数据,或者用函数生成复杂的数组。

预定义形状:

创建一个数组和复制(copy)一个数组
数组形状设置行列数 以及填充内容 np.zeros() 和 np.ones()
np.empty() 进行快速构建, 但是数组内容都是随机值
np.full 指定进行填充满;
np.zeros_like(); 创建形状一样 但是全填充0
np.full_like (arr, 2); 指定填充
np.arange(start, end, temp)等差数列
np.linspace(start, end, temp) # 把前面数字均匀分成temp 等份 其中start 跟 end是左闭 右闭
np.logspace(a, b, n, base = k) 对数间隔数列
复制代码
# 步骤 1:先确定 “对数的间隔”:从 0 到 4,分 3 个数,间隔是(4-0)/(3-1)=2 → 对数分别是0、2、4
# 间隔都得是 (b-a)÷(n-1)
# 步骤 2:算 2 的这几个对数的次方:2⁰=1,2²=4,2⁴=16

矩阵

名称 维度 示例 备注
标量 0 维 5, 3.14 单个数字,无行列
向量 1 维 [1, 2, 3] 只有行或列(一维数组)
矩阵 2 维 [[1, 2], [3, 4]] 严格的行列结构(二维表)
张量 ≥3 维 [[[1, 2], [3, 4]]] 高阶数组(如 RGB 图像)

特殊矩阵

矩阵类型 定义 例子
零矩阵 所有元素为 0 [00​00​]
单位矩阵 对角线上为 1,其余为 0 [10​01​]
对角矩阵 只有对角线有非零值 [20​03​]
对称矩阵 A=AT(矩阵与自身的转置相等) [12​23​]
生成单位矩阵 和 对角矩阵
生成随机数 np.random.rand()
生成随机浮点数
生成随机整数
生成随机数正太分布
设置随机数种子
ndarray 的数据类型
数据类型 说明
bool 布尔类型
int8、uint8 有符号、无符号的 8 位(1 字节)整型
int16、uint16 有符号、无符号的 16 位(2 字节)整型
int32、uint32 有符号、无符号的 32 位(4 字节)整型
int64、uint64 有符号、无符号的 64 位(8 字节)整型
float16 半精度浮点型
float32 单精度浮点型
float64 双精度浮点型
complex64 用两个 32 位浮点数表示的复数
complex128 用两个 64 位浮点数表示的复数

索引 和 切片

一维数组 的索引与切片
二维数组的索引与切片
ndarray的运算
原始列表就不可以直接向numpy一样相加 否则就是拼接了
二维矩阵运算
广播机制
矩阵相乘 a @ b

2.3 Numpy 常用函数

分类 函数列表
基本数学 np.sqrt(x)np.exp(x)np.log(x)np.sin(x)np.abs(x)np.power(a, b)np.round(x, n)
统计 np.sum(x)np.mean(x)np.median(x)np.std(x)np.var(x)np.min(x)np.max(x)np.percentile(x, q)
比较与去重 np.greater(a, b)np.less(a, b)np.equal(a, b)np.logical_and(a, b)np.where(condition, x, y)np.unique(x)np.in1d(a, b)
其他与排序 np.concatenate((a, b))np.split(x, indices)np.reshape(x, shape)np.copy(x)np.isnan(x)np.sort(x).x.sort()np.argsort(x)np.lexsort(keys)
算术平方根
计算指数 e^x np.exp()
计算自然对数 lnX np.log()
计算正弦值 和 余弦值 np.sin() 和 np.cos()
计算绝对值 np.abs([])
计算a的b次幂 np.power([], 3)
四舍五入 但是.5 在python中会舍掉 np.round([])
向上 和 向下取整 np.ceil([]) 和 np.floor([])
检测缺失值np.isnan([])
统计函数
数组求和 np.sum([])
计算平均值np.mean([])
计算中位数 排序后中间的数
计算标准差(np.std([]))和方差(np.var([]))
计算最大值和最小值max([]) min([])
计算分位数(np.percentile([], 25)) 和 中位数(np.median([]))
计算累积和(np.cumsum([])) 累积积(np.cumprod([]))

比较函数

是否大于(np.greater([], 4))、小于(np.less([], 4))、等于(np.eqaul([]), 4)
逻辑与或非(np.logical_and([], []); np.logical_or([], []); np.logical_not([[]))
检查元素是否至少有一个为true (np.any([]))

检查是否全部元素为true (np.all([]))

自定义条件(np.where(条件, 符合条件, 不符合条件))
np.where() 可以进行嵌套
np.select() 可以达到跟np.where()嵌套之后相同的效果
排序函数 arr.sort() 或者 np.sort(arr)
去重函数 可以用作找唯一值 np.unique(arr)
数组的水平拼接 np.concatenate(arr1, arr2)
数组的分割 np.split(arr, [6, 12, 18]) 在[6, 12, 18] 里面进行下刀
可以将一维数组 转换成二维数组; 也可以进行数组的垂直拼接!!
调整数组的形状 np.reshape(arr, [4, 5]) 必须要进行等分 每一行的个数都要相等
综合练习
  1. 某城市一周的最高气温(℃)为 [28, 30, 29, 31, 32, 30, 29]。
  • 计算平均气温、最高气温和最低气温。
  • 找出气温超过 30℃ 的天数。
  1. 某班级 5 名学生的数学成绩为 [85, 90, 78, 92, 88]。
  • 计算成绩的平均分、中位数和标准差。
  • 将成绩转换为百分制(假设满分为 100)。
  1. 生成一个 (3, 4) 的随机整数数组,范围 [0, 10)。
  • 计算每列的最大值和每行的最小值。
  • 将数组中的所有奇数替换为 -1。
  1. 创建一个 1 到 12 的一维数组,并转换为(3,4)的二维数组。
  • 计算每行的和与每列的平均值。
  • 将数组展平为一维数组。
  1. 生成一个(5,5)的随机数组,范围 [0,20)。
  • 找出数组中大于 10 的元素。
  • 将所有大于 10 的元素替换为 0。
  1. 某公司 6 个月的销售额(万元)为 [120, 135, 110, 125, 130, 140]。
  • 计算销售额的总和、均值和方差。
  • 找出销售额最高的月份和最低的月份。
  1. 给定 \(A = [1, 2, 3]\) 和 \(B = [4, 5, 6]\)。
  • 将 A 和 B 水平拼接为一个新数组。
  • 将 A 和 B 垂直拼接为一个新数组。
  1. 给定数组 [2, 1, 2, 3, 1, 4, 3]。
  • 找出数组中的唯一值并排序。
  • 计算每个唯一值出现的次数。
  1. 某商店 5 天的销售额(万元)和成本(万元)如下:销售额: [20, 25, 22, 30, 28]成本: [15, 18, 16, 22, 20]
  • 计算每天的利润(销售额 - 成本)。
  • 计算利润的平均值和标准差。
  • 找出利润最高的天数。
相关推荐
Michelle802343 分钟前
24大数据 14-2 函数练习
开发语言·python
qq_381454991 小时前
Python学习技巧
开发语言·python·学习
Ndmzi1 小时前
Matlab编程技巧:自定义Simulink菜单(理解补充)
前端·javascript·python
勇气要爆发1 小时前
物种起源—JavaScript原型链详解
开发语言·javascript·原型模式
dagouaofei1 小时前
AI生成个性化年终总结PPT
人工智能·python·powerpoint
freedom_1024_2 小时前
【c++】使用友元函数重载运算符
开发语言·c++
San30.2 小时前
深入理解 JavaScript OOP:从一个「就地编辑组件」看清封装、状态与原型链
开发语言·前端·javascript·ecmascript
郑州光合科技余经理2 小时前
基于PHP:海外版同城O2O系统多语言源码解决方案
java·开发语言·git·spring cloud·uni-app·php·uniapp
zmzb01032 小时前
C++课后习题训练记录Day43
开发语言·c++