NumPy常用操作
Posted jasonbupt
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NumPy常用操作相关的知识,希望对你有一定的参考价值。
NumPy 是一个 python 科学计算的核心库,它提供了高性能的多维数组类型和处理这些高维数组的工具。
导入
import numpy as np
创建数组
a = np.array([1,2,3])
a = np.array([(1.5,2,3),(4,5,6)],dtype=float)
a = np.array([[(1.5,2,3),(4,5,6)],[(3,2,1),(4,5,6)]],dtype=float)
初始化元素
# 用 0 初始化数组
np.zeros((3,4))
# 用 1 初始化数组
np.ones((2,3,4))
# 生成元素全为 7 的数组
np.full((2,2),7)
# 生成单位矩阵
np.eye(2)
# 生成随机矩阵, 注意有两个 random
np.random.random((2,2))
# 生成 10 到 25 的数,步长为 5
np.arrange(10,25,5)
# 9 个数字均分 0 到 2
np.linspace(0,2,9)
了解数组特征
# 显示数组的维度
a.ndim
# 显示数组各维度的长度
a.shape
# 显示数组长度(第一维)
len(a)
# 显示数组元素的个数
a.size
# 显示数组元素的数据类型
a.dtype
# 将数组元素转化为另一种类型
a.astype(int)
数组的数学操作
算术操作
# 矩阵乘法,除了这个函数,其他操作都是元素级的操作
a.dot(b)
数组比较
# 元素级比较,生成的一个 shape 与原数组相同的 bool 数组
a < 2
# 元素级比较,数组的 shape 必须相同,结果形式同上
a == b
# 数组级比较,生成一个 bool 变量
np.array_equal(a.b)
聚合函数
# 所有元素求和
a.sum()
# 求所有元素的最小值 ## axis=0 -> 以列为单位 axis=1 -> 以行为单位
a.min()
# 求所有元素的均值
a.mean()
# 求所有元素的中位数
a.mediana()
# 求数组的标准差
np.std(a)
复制数组
# b=a.view(),b=np.copy(a)的效果也一样
b = a.copy()
数组排序
# 排序数组,axis 也是可选参数
a.sort()
元素筛选
取子集
# 从 0 开始计数,先行后列
a[1,2]或 a[1][2]
切片
# python 中的区间左闭右开,例如 [2:5] 就等于 2,3,4
# 反转数组中的元素
a[::-1]
布尔索引
# 选出 a 中小于 2 的元素
a[a<2]
数组操作
转置数组
# 也可以写成 np.transpose(a)
a.T
改变数组的形状
# 将数组拉平
a.ravel()
# 有返回值,所谓有返回值,即不会对原始多维数组进行修改;
# 改变数组形状, 但是不改变数据, 多余数据截断, 缺少数据用 0 补齐
a.reshape(3,-1)
# 无返回值,所谓无返回值,即会对原始多维数组进行修改;
a.resize((3,2))
增加或减少元素
# 将 a 拉平后,在尾部加上 b
np.append(a,b)
# 在将位置 1 开始的元素整体后移,插入新元素 5
np.insert(a,1,5)
# 删除位置 1 的元素
np.delete(a,[1])
拼接数组
# 要拼接的那个维度长度必须相同,例如 axis=0,就是按行拼接,列数必须相同
np.concatenate((a,b),axis=0)
# 按一行行拼接
np.vstack((a,b))
np.r_[a,b]
# 按一列列拼接
np.hstack((a,b))
np.c_[a,b]
np.column_stack((a,d))
分割数组
# 将 a 按列分为 3 个相同的子数组(horizontally == column-wise)
np.hsplit(a,3)
# 将 a 按行分为 3 个相同的子数组(vertically == row-wise)
np.vsplit(a,3)
对于 axis 参数的理解
如果我们将聚合函数作用在张量上,张量的维度一定会下降,而 axis 就决定了哪个维度将坍塌。
axis=0 就是 row-wise,axis=1 就是 column-wise,axis=2 就是 depth-wise
以上是关于NumPy常用操作的主要内容,如果未能解决你的问题,请参考以下文章