NumPy常用操作

NumPy 是一个 python 科学计算的核心库,它提供了高性能的多维数组类型和处理这些高维数组的工具。

导入

import numpy as np

创建数组

1960527.png

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

原文地址:https://www.cnblogs.com/JasonBUPT/p/11609910.html