前言
重新梳理numpy知识点。整理几个常用的函数。主要参考DataCamp的numpy cheat sheet。
初始化数组
以下两个较为实用,但是容易忘记。
>>> np.arange(10,25,5) # 创建一个[10,25),间隔为5的数组
array([10, 15, 20])
>>> np.linspace(0,2,9) # 创建一个[0,2],9个间隔均等的值的数组
array([0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ])
读写操作
np.loadtxt()
较之np.genfromtxt()
更为实用。后者经常用于.csv
数据的处理中。这里,记录一下关于前者的使用。
可以在参数中添加delimiter
以及dtype
进行间隔符号以及数据类型制定。
>>> np.loadtxt('myfile.txt') # 处理数值文本时,不加参数会报错
ValueError: could not convert string to float: '2,3,4,5'
>>> np.loadtxt('myfile.txt',delimiter=',')
array([[2., 3., 4., 5.],
[6., 7., 8., 9.]])
>>> np.loadtxt('myfile.txt',delimiter=',',dtype=int)
array([[2, 3, 4, 5],
[6, 7, 8, 9]])
查看数组属性
除了常见的几个操作之外,还有如下几个操作也值得了解。
arr.ndim #查看数组的维数,2维数组为2
arr.size # 描述数组元素个数
arr.dtype #查看数组元素数据类型
arr.dtype.name # 打印对应元素数据类型的名称
arr.astype(int) # 转换数组元素的数据类型(需要符合转换条件)
矩阵运算
区别于矩阵操作
数学运算
在做矩阵数学运算的时候,注意,一定时调用模块里的函数,然后传入对应的数组参数。除了,arr1.dot(arr2)
。
比较
一定是元素的对应比较(element-wise),返回的结果也是元素为True
或False
的相同维度的矩阵。
聚合函数
对于聚合操作,则一定是某数组arr
调用某聚合函数。除了,np.std()
操作。
矩阵切片
>>> arr[::-1] # 逆转矩阵,注意这里是值操作本身不变
数组操作
注意:数组操作后,原数组不变。
转置
使用arr.T
或者np.transpose(arr)
对数组arr
进行转置。
改变数组shape
>>> arr.ravel() # 拉成1维矩阵
>>> arr.reshape(2,2,2,...) #参数为维度信息
添加/删除 数组元素
>>> arr.resize((2,2)) # 注意,这个是引用操作,另arr只能是一维数组
# 下面的三个操作都是值操作,不改变原数组
np.append(arr1,arr2)# 结果被调整为1维数组
np.insert(arr,1,5)#往数组arr的下标为1处插入值5
np.delete(arr,[1,...])#从数组arr中删除下标为1...的元素
拼接/分割数组
# 行拼接,列相同
np.vstack()
np.r_[]
# 列拼接,行相同
np.hstack()
np.c_[]
# 分割数组
np.hsplit()#行
np.vsplit()#列
结束语
重新梳理了一遍,主要是数组操作这块不是很熟悉。