1. NumPy介绍
NumPy(Numeric Python)是Python科学计算最常用的核心工具库,为快速处理大型多维数组和矩阵提供了高效的数学函数和工具。
Numpy的基本数据结构称为数组(array),它是一个n维向量对象,可以承载同一类型的元素,例如整数或浮点数等,并支持快速的数值运算和线性代数操作。Numpy还能够简化复杂的数据运算。在科学计算、机器学习、数据挖掘等领域Numpy是必不可少的工具之一。
关于NumPy更具体的说明可以参见官网:https://numpy.org/
2. NumPy的基本操作——矩阵变形
首先我们先设定一个array为t,后面的NumPy操作实例都用t为例来说明。
import numpy as np t = np.array([[1,2,3], [4,5,6], [7,8,9], [10,11,12]])
2.1 改变array形状 .reshape()
print(t.reshape(3,4))
输出为:
[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]]
也可以拆成更高维度:
print(t.reshape(3,2,2))
输出为:
[[[ 1 2] [ 3 4]] [[ 5 6] [ 7 8]] [[ 9 10] [11 12]]]
2.2 矩阵转置 .T
print(t.T)
输出为:
[[ 1 4 7 10] [ 2 5 8 11] [ 3 6 9 12]]
2.3 压缩成一行 .flatten()
print(t.flatten())
输出为:
[ 1 2 3 4 5 6 7 8 9 10 11 12]
2.4 输出特定位置元素
print(t[1,2])
输出为:
6
2.5 切片(重点!)
横向切片
print(t[3,:]) print(t[3]) #两者等效
输出为:
[10 11 12]
纵向切片
print(t[:,2])
输出为:
[ 3 6 9 12]
还可以进行多个横向和纵向切片。注意!这里的数字是从0开始数的!
print(t[[3,1],:])
输出为:
[[10 11 12] [ 4 5 6]]
还可以切块:
print(t[1:3,1:3])
输出为:
[[5 6] [8 9]]
需要注意的是切块的时候[1:3, 1:3]这里的数字1和3,和上面切一行或者一列的1或3的含义并不同。切块这里的1和3是真实从1开始数的。
[1:3, 1:3]的含义是从第1行开始切(第1行不要了),切到第3行(第3行保留),列也是同样的道理。
3. NumPy的基本操作——矩阵元素计算
3.1 输出大于x的值
print(t[t>5])
输出为:
[ 6 7 8 9 10 11 12]
输出小于x的值同理。
3.2 替换大于x的值
t[t>5] = 10 #把大于5的数值替换成10 print(t)
输出为:
[[ 1 2 3] [ 4 5 10] [10 10 10] [10 10 10]]
替换小于x的值同理。
3.3 分类操作 .where()
把array中大于5的值替换成100,小于等于5的值替换成0:
t = np.where(t>5,100,0) #where操作 print(t)
输出为:
[[ 0 0 0] [ 0 0 100] [100 100 100] [100 100 100]]
3.4 分类操作 .clip()
把array中大于6的值替换成6,小于等于3的值替换成3:
print(t.clip(3, 6))
输出为:
[[3 3 3] [4 5 6] [6 6 6] [6 6 6]]
3.5 求和 .sum()
print(t.sum())
输出为:
78
3.6 求最小值 .min(axis=)
这里axis=0为求每列的最小值,axis=1为求每行的最小值:
print(t.min(axis=0))
输出为:
[1 2 3]
3.7 求标准差 .std(axis=)
axis的含义同上:
print(t.std(axis=0))
输出为:
[3.35410197 3.35410197 3.35410197]```
以上,NumPy的基本操作介绍完毕。