Numpy学习(四)-----排序,筛选,集合,视图,矩阵库,文件

一.排序

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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值