numpy方法汇总(切片,组合等)

本文详细介绍了numpy的索引方式,包括布尔索引、花式索引和普通索引,并强调了切片的视图特性。此外,还探讨了numpy数组的属性如shape、dtype、ndim等。接着,讨论了排序函数np.sort和np.argsort,以及数组的组合与分拆操作。最后,讲解了ufunc函数,包括reduce、accumulate等,并提到了自定义ufunc的可能性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、numpy索引

1.1

布尔索引

row_index = (M[:,0] >= 20) & (M[:,0] <= 80)
col_index = M[0,:] >= 5
M[row_index,:][:,col_index]

注意:不能在同一个方括号中对列和行都使用布尔索引。新词我们必须先在行方向上进行布尔选择,然后重新打开方括号进行第二次选择,这一次集中在列方向上选择

如果需要对数组元素进行全局选择,可以

mask = (M >= 20) & (M <= 90) & ((M / 10) % 1 >= 0.5)
M[mask]

 

1.2 花式索引

row_index = [1,1,2,7]
col_index = [0,2,4,8]
M[row_index,col_index] # 选出(1,0)(1,2)(2,4)(7,8)位置的元素
M[row_index,:][:,col_index] # 选出4行4列

注意:花式索引和普通步数切片索引,要牢记

 

1.3 普通索引

M[2:9:2,:]      # 第2至8行的偶数行
M[2:9:2,5:]     # 第2至8行的偶数行&第6列以后的数据
M[2:9:2,5::-1]  # 第2至8行的偶数行&第6列开始,逆序取值到第一列

注意:切片和索引只是数据的观测,如果需要为这些观测创建新的数据则必须使用.copy()方法将切片数据赋给另一个变量,否则,对原数组的修改都将反映到切片数据上

也就是说,数组切片索引是原始数组的视图,它与原始数组共享一个数据存储空间,即数据不会被复制,视图上的惹和修改会直接反映到原始数组

N = M[2:9:2,5:].copy()

二、numpy的属性

shape、dtype、ndim、size、T、flat、nbyte

三、numpy函数

np.sort(s,axis=...):返回排序后的数组

np.argsort(s):返回数组排序后的下标(下标为原未排序的下标)

np.lexsort():根据键值的字典序进行排序

s.reshape(1,2,3):维度改变

np.transpose(s):转置=s.T

四、数组组合、分拆

np.hstack((a,b)):a,b水平组合=np.concatenate((a,b),axis=1),列数增加

np.vstack((a,c)):a,c竖直组合=np.concatenate((a,b),axis=0)类似于新增记录,行数增加

深度组合、列组合、行组合见阮敬python数据分析基础

np.hsplit(a,3):结果是列表,列表中第一个元素是分割后第一列的结果,=np.split(a,3,axis=1)

np.vsplit(a,3):结果是列表,列表中第一个元素是分割后第一行的结果,=np.split(a,3,axis=0)

五、ufunc运算

universal function是一种能对数组中每个元素进行操作的函数,使用outer关键字指定把函数返回结果存储在指定数组

5.1 reduce、accumulate、reduceat、outer

 

np.add(a1,a2)

a1>a2

any(a1>a2)

all(a1>a2)

5.2 自定义ufunc函数

frompyfunc(func,n_in,n_out)

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值