numpy笔记
Posted sewell
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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笔记的主要内容,如果未能解决你的问题,请参考以下文章