numpy笔记
2021/8/31 23:06:28
本文主要是介绍numpy笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
numpy简介
numpy是数学科学最基本的python库,底层是c语言实现,运行效率堪比C/Matlab,主要是做矩阵运算
矩阵常识(二维数组)
- 向量:1*N或N*1的矩阵
- 标量:1*1矩阵
- 数组:N维数组,矩阵延申
- 特殊矩阵:全0或全1矩阵
- 单位矩阵:任何矩阵乘单位矩阵等于其自身
常见创建数组的方法
- 通过其他数据类型转换
- np.array([0, 1, 2])
- np.array((0, 1, 2))
- 通过原生数组创建
- np.zeros(n) # 创建n个0的数组
- np.ones(n) # 创建n个1的数组
- np.full((x, y), z) # 创建一个以z填充,形状为x*y的数组
- np.zeros_like/ones_like/full_like() # like后缀:用与传入数据相同的数据结构和类型生成数组
- np.arange(a, b, c) # 生成从a到b的数组,c是跨度,为可选参数
- np.arange(a) # 生成从[0, a)的数组
- np.linspace(开始, 结束, 生成个数) # 创建等差数列
- np.eye(10, 10, 2) # 生成对角矩阵(可调对角线位置
- 通过特殊库函数(random
- np.random.
- rand(3, 3) # 生成3*3的数组,每个数都是0-1的随机数
- randint(n) # 生成[0, n)之间的随机数
- randint(a, b,(c*d)) # 生成c*d维数组,每个数都是[a, b)之间的随机数
- randn(a, b) # 生成a*b正态分布数组(指矩阵内数据出现的次数呈正态分布
- np.random.
常见属性
- np对象.dtype # 数组数据类型
- np对象.ndim # 数组维度
- np对象.shape # 形状(n*n
- np对象.size # 大小(有多少个元素)
- np对象.itemsize # 每个数据占的字节大小
- np对象.nbytes # 全部数据占的字节大小
访问数组元素的方式
np对象[0][2] # 等价于 np对象[0, 2]
运算(所有操作都是对数组内全部数据操作
a = np.full((2, 2), 1.2, dtype = float) a + 10 # 等价于 np.add(a, 10)
比较
# ><==:返回bool类型的数组,此数组内每个值反映原数组内每个值是否符合条件 # 返回bool值,判断数组内全部值是否都符合条件 np.all(数组对象 操作符 条件) # 返回bool值,判断数组内是否有一个值符合条件 np.any(数组对象 操作符 条件)
排序
-
不改变原数组
对每一行进行排序
np.sort(数组对象)
对列进行排序
np.sort(a, axis=0)
-
改变原数组排序(python内置函数
数组对象.sort() # 列排序
数组对象.sort(axis = 0)
统计数据方法
-
注意
- np.sum比sum效率高很多
- np统计方法加参数axis=1求每行和/每行最大值
-
求和
- sum求多维数组和时默认求每列和
数组一维/多维求和
np.sum(数组对象)
sum求第n行和
sum(数组对象[n])
等于
sum(数组对象[n, :])sum求第n列和
sum(数组对象[:,n])
-
求最大值
np.max(c)
切片
-
只有冒号代表忽略行/列
以n*n的方式顺着或倒着切
np对象[n:, n:]
切第N行
np对象[n, :]
切第N列
np对象[:, n]
只切行不切列
np对象[2:][1:]
拼接
a = np.array([[0, 2, 4],[1, 3, 5]]) # 按行拼接(axis默认0 np.concatenate([a, a, a]) array([[0, 2, 4], [1, 3, 5], [0, 2, 4], [1, 3, 5], [0, 2, 4], [1, 3, 5]]) # 按列拼接 np.concatenate([a, a, a], axis = 1) array([[0, 2, 4, 0, 2, 4, 0, 2, 4], [1, 3, 5, 1, 3, 5, 1, 3, 5]])
序列化文件
# 保存 np.save(文件名, 数组) # 加载 np.load(文件名.npy, 数组) # 序列化多个array np.savez(文件名, 名字1 = 数组1, 名字2 = 数组2) # 加载具有多个array的文件 np.load(文件名.npz) 根据名字访问对应数组 np.load(文件名.npz)[名字]
这篇关于numpy笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24怎么修改Kafka的JVM参数?-icode9专业技术文章分享
- 2024-12-23线下车企门店如何实现线上线下融合?
- 2024-12-23鸿蒙Next ArkTS编程规范总结
- 2024-12-23物流团队冬至高效运转,哪款办公软件可助力风险评估?
- 2024-12-23优化库存,提升效率:医药企业如何借助看板软件实现仓库智能化
- 2024-12-23项目管理零负担!轻量化看板工具如何助力团队协作
- 2024-12-23电商活动复盘,为何是团队成长的核心环节?
- 2024-12-23鸿蒙Next ArkTS高性能编程实战
- 2024-12-23数据驱动:电商复盘从基础到进阶!
- 2024-12-23从数据到客户:跨境电商如何通过销售跟踪工具提升营销精准度?