Numpy 数据库

1、Numpy 数组(ndarray)的核心特性

多维性:支持0维(标量,数字),1维(向量),2维(矩阵)及更高维

同质性:所有元素类型必须一致(通过dtype指定),不同数据类型会被强制转换成相同数据类型

高效性:基于连续内存块存储,支持向量化运算

python 复制代码
#多维性
import numpy as np
#创建0维的数组
arr=np.array(5)
print(arr)
print("array的维度:",arr.ndim)
#创建1维的数组
arr=np.array([1,2])
#创建2维的数组
arr=np.array([[1,2,3],[4,5,6]])

2、ndarray的属性

shape:数组的形状,行数和列数

ndim:维度的数量

size:总元素的个数

dtype:元素的数据类型

T:元素的转置

python 复制代码
#ndarray的属性
arr=np.array([1,2,3])
print(arr.shape)

3、ndarray的创建方式

python 复制代码
#1、基础构造,讲过
list=[4,5,6]
arr=np.array(list,dtype=float64)
#复制,是浅拷贝
arr1=np.copy(arr)

#2、预定义形状填充
arr=np.zeros((2,3)) #二维,两行三列全0数组
arr=np.ones((2,)) #一维,一行,有两个元素,都是1
arr=np.empty((4,2)) #未初始化,随意填充,效率高
arr=np.full((3,4),2025) #指定元素填充,二维,三行四列,每个元素都是指定的2025

#3、基于数值范围生成
#等差数列
arr=np.arange(1,10,1) #start,end,步长,[1 2 3 4 5 6 7 8 9],不包含最后一个
#等间隔数列
arr=np.linspace(0,10,4) #[ 0.          3.33333333  6.66666667 10.        ]
#对数间隔数列
arr=np.logspace(0,4,3,base=2)#2**0,2**2,2**4

#4、特殊矩阵生成
#单位矩阵
arr=np.eye(3)#三阶单位矩阵
#三行四列,对角线上元素为1
arr=np.eye(3,4)
#对角矩阵
arr=np.diag([1,2,3])

#5、随机数组生成
arr=np.random.rand(2,3)#生成两行三列的数组,里面的数据是0到1之间的随机数
#生成指定范围区间的随机浮点数
arr=np.random.uniform(3,6,(3,4)) #生成3到6之间的随机浮点数,矩阵是3*4的
#生成指定范围区间的随机整数
arr=np.random.randint(3,20,(3,4)) #生成3到20之间的随机浮点数,矩阵是3*4的
#生成随机数(标准正态分布)
arr=np.random.randn(2,3)
#设置随机种子,确保每次生成的都是一样的
np.random.seed(20)

4、ndarray的数据类型

python 复制代码
#布尔类型
arr=np.array([1,0,2,0],dtype=bool) #[ True False  True False],非0的都映射到true
#int类型
arr=np.array([1,0,2,0],dtype=np.int8) #[1 0 2 0],int8范围是0到127

5、索引与切片(如何从数组中取数)

python 复制代码
#一维数组的索引与切片
arr=np.array([2,9,6,7,4,8,25,10,12,56,64,43,75,31,7],dtype=np.int8)
#访问下标为1的元素
print(arr[1]) #9
#获取全部的数据
print(arr[:]) #[ 2  9  6  7  4  8 25 10 12 56 64 43 75 31  7]
#获取部分数据,左闭右开,即下标为2到下标为4的数据
print(arr[2:5]) #[6 7 4]
print(arr[slice(2,5)]) #[6 7 4]
#还可以使用步长,表示隔几个进行切割
print(arr[slice(2,11,2)]) #[ 6  4 25 12 64]
#获取arr中大于5小于8的元素,或是|
print(arr[(arr>5)&(arr<8)]) #[6 7 7]
python 复制代码
#二维数组的索引与切片
arr=np.random.randint(1,100,(4,8))
print(arr)
#如果想取某个数字,它在第4行,第3列
print(arr[3,2])
#取第二行,4到5列的数
print(arr[1,3:5])
#会将符合条件的元素提取出来,变成一个一维数组
print(arr[arr>50])
#筛选出最后一行中比50大的元素
print(arr[3,:][arr[3,:]>50])

6、ndarray的运算

python 复制代码
#两个长度相同的数组,相同位置的元素可以进行加减乘除
a=np.array([1,2,3])
b=np.array([4,5,6])
print(a+b)
#两个结构一样的矩阵,相同位置的元素可以进行加减乘除
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)
#数组或矩阵加减乘除某一个数字,每一个元素都会相应地变化
#广播机制,先扩充,对应位置进行运算
a=np.array([1,2,3]) #1*3
b=np.array([[4],[5],[6]]) #3*1
print(a+b)
#矩阵乘法运算
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)

7、numpy中常用函数

python 复制代码
#数学函数
#计算平方根
print(np.sqrt(9))
print(np.sqrt([1,4,9]))
#计算指数
print(np.exp(1))
#计算自然对数,ln x
print(np.log(2))
#计算正弦、余弦等
#计算绝对值abs
#计算a的b次幂
print(np.power(2,3))
#四舍五入round,向上取整ceil,向下取整floor
#检测缺失值isnan

8、numpy中统计函数

python 复制代码
import numpy as np
arr=np.random.randint(1,20,8)
print(arr)
#求和
print(np.sum(arr))
#求平均mean、中位数median、方差var、标准差std,最大值max、最小值min、最大值索引argmax、最小值索引argmin
#求分位数
print(np.percentile(arr,50))
#求累计和、累积积
print(np.cumsum(arr))
print(np.cumprod(arr))

9、numpy中比较函数

python 复制代码
#数组中的元素是否大于某一个元素
print(np.greater([3,2,5,6,4,7],4)) #[False False  True  True False  True]
#数组中的元素是否小于某一个元素less,等于equal
#逻辑与或非,0是false
print(np.logical_and([0,0],[1,1]))
print(np.logical_or([0,0],[1,1]))
print(np.logical_not([0,1]))
#检查是否至少一个元素为true
print(np.any([0,0,1,0]))
#检查是否全部元素为true
print(np.all([0,0,1,0]))
#自定义条件print(np.where(条件,符合条件,不符合条件))
print(np.where(arr>3,arr,0))
#np.select(条件,返回的结果)     
scores=np.array([78,95,83,88,90,59])
print(np.select([scores>80,(scores>=60)&(scores<=80),scores<60],['优秀','良好','不及格'],default='未知'))

10、numpy中排序函数

python 复制代码
#排序
np.random.seed(0)
arr=np.random.randint(1,100,20)
print(arr)
print(np.sort(arr))
#打印出排序后的数据的索引
print(np.argsort(arr))
#去重,同时也会进行排序
print(np.unique(arr))
#数组的拼接
arr1=np.array([1,2,3])
arr2=np.array([4,5,3])
print(np.concatenate((arr1,arr2)))
#数组的分割,将其分割成四份,要正好能等分的才行,不然会报错
print(np.split(arr,4))
#提供切割的位置
print(np.split(arr,[6,12,18]))
#调整数组的形状
print(np.reshape(arr,[4,5]))
相关推荐
波诺波2 小时前
p3项目-模拟 PID 控制器用来调节直流电机的转速
python·pid
路飞雪吖~2 小时前
【测试】接口测试---1个框架,5个模块
开发语言·python·测试工具
枫叶林FYL2 小时前
【Python高级工程与架构实战】项目三:实时数据管道(Kafka + Polars + Delta Lake)(一)
人工智能·机器学习
q_35488851532 小时前
计算机毕业设计:Python居民出行规律可视化分析系统 Django框架 可视化 数据分析 PyEcharts 交通 深度学习(建议收藏)✅
人工智能·python·数据分析·车载系统·django·汽车·课程设计
FL16238631292 小时前
基于yolov26的荔枝成熟度检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面
pytorch·python·yolo
iuu_star2 小时前
宝塔Linux部署python常遇问题解决
开发语言·python·腾讯云
Dream of maid2 小时前
Python基础4(函数)
开发语言·python
vx_biyesheji00012 小时前
计算机毕业设计:Python城市交通出行模式挖掘系统 Django框架 可视化 数据分析 PyEcharts 交通 深度学习(建议收藏)✅
人工智能·python·深度学习·数据分析·django·汽车·课程设计
yuanmazhiwu2 小时前
计算机毕业设计:Python智慧出行数据分析与模式识别系统 Django框架 可视化 数据分析 PyEcharts 交通 深度学习(建议收藏)✅
人工智能·python·算法·数据分析·django·flask·课程设计