一.排序
np.sort(a, axis, kind, order)#返回的是已排序的副本。kind是指排序方法,默认是'quicksort',order是指如果数组包含字段,选择的要排序的字段.
np.argsort() #函数返回的是数组值从小到大的索引值。
np.lexsort((a,b)# 用于对多个序列进行排序。排序时优先照顾靠后的列。
np.sort_complex(a) #对复数按照先实部后虚部的顺序进行排序。
np.partition(a, 3) # 将数组 a 中所有元素(包括重复元素)从小到大排列,3 表示的是排序后数组索引为 3 的数字,比该数字小的排在该数字前面,比该数字大的排在该数字的后面
np.partition(a, (1, 3)) # 小于 1 的在前面,大于 3 的在后面,1和3之间的在中间
a[np.argpartition(a, 2)[2]]#找到数组中第三小的值
a[np.argpartition(a, [2,3])[2]]
a[np.argpartition(a, [2,3])[3]]#找到数组中第二,三小的值
二.条件筛选函数
np.nonzero() #函数返回输入数组中非零元素的索引。
np.where(cond,x,y) # 从x,y两个数组中选择,满足条件就从x中选,否则就是y中的值
np.where(cond) #对于某一个数组而言,返回满足该条件的元素的下标
np.extract(condition,a)# 函数根据某个条件从数组中抽取元素,返回满条件的元素。
np.take(数组,下标数组) #数组中由下标数组所标示的元素的集合
array.any() #判断数组中是否存在True
array.all() #判断数组中是否所有值都是True
示例:
# 循环:
for i in range(n):
if cond1[i] and cond2[i]:
result=0
elif cond1[i]:
result=1
elif cond2[i]:
result=2
else:
result=3
#用where条件表示
np.where(cond1 & cond2,0,np.where(cond1,1,np.where(cond2,2,3)))
#用算术运算表示:
result=1*(cond1-cond2) + 2 * (cond2& -cond1) + 3* -(cond1 | cond2)
三.集合逻辑
四.视图与副本
a.view() #创建一个新的数组对象,它的数据更改不会影响原来的数组的数据。用切片创建的视图,修改后会影响原来的数据元素
a.copy() #创建一个副本,修改数据不会影响到原来的数组的数据
五.矩阵
1.矩阵库(np.matlib)
np.matlib.empty(shape,dtype,order) #创建一个未初始化的矩阵
np.matlib.zeros()
np.matlib.ones()
np.matlib.eye(n,M,k,dtype) #n是指矩阵的行数,m是列,默认等于行,k是第一行中对角线元素的索引
np.matlib.identity(m,dtype) #返回指定大小的单位矩阵
np.matlib.rand() #创建一个给定大小的矩阵,数据是随机填充的。
2.矩阵与数组的转换
a=np.matrix('1,2;3,4')
b=np.assary(a)
c=np.asmatrix(b)
print(a)
print(b)
print(c)
六.Numpy线性代数
常用函数
np.diag(array,k) #生成一个以array为对角线的矩阵,k代表相对于对角线的位置,默认是0,k>0代表对角线上,k<0代表对角线以下
np.dot(a,b,out) #对于两个一维数组,计算的是数组对应下表的元素的乘积和,对于二维数组,计算的是两个数组的矩阵乘积
np.vdot(a,b) #是两个向量的点积。 如果第一个参数是复数,那么它的共轭复数会用于计算。 如果参数是多维数组,它会被展开。
np.inner() #返回一维数组的向量内积。对于更高的维度,它返回最后一个轴上的和的乘积。
np.linalg.det() #计算输入矩阵的行列式。
np.linalg.solve() #给出了矩阵形式的线性方程的解
np.matmul() #返回两个数组的矩阵乘积。 虽然它返回二维数组的正常乘积,但如果任一参数的维数大于2,则将其视为存在于最后两个索引的矩阵的栈,并进行相应广播。
np.linalg.inv() #计算矩阵的乘法逆矩阵。
七.文件操作
np.savetxt(文件名,二维数组,delimiter=分隔符)
np.save('file_name',a) #将数组a以二进制的形式存到.npy文件中
np.savez('file_name',a=arr,b=brr)#将多个数组存到.npz文件中,可以用关键字来分配
c=np.load('file_name')
print(c['a']) #以字典关键字的形式读取
np.loadtxt(文件名,delimiter=分隔符,usecols=选择列,skiprows,unpack=是否解包,dtype=目标类型,converters=转换器)#unpack是指将数据的单独一个字段提取出来成为一个数组,converters是将数据转换成想要的格式,实质上是一个函数
示例:
# 将数据中的日期由原来的‘28-01-2008’格式转换成‘2008-01-28’格式
def dym2dmy(dym):
dmy = str(dym)
print(dmy)
s = dmy[8:-1] + '-' + dmy[5:7] + '-' + dmy[2:4]
return s
dates = np.loadtxt(r'..\..\test1.csv', delimiter=',',
usecols=(0,),
unpack=True,
dtype='U10',
converters={0: dym2dmy}) # 对第0列数据进行转换
print(dates)