numpy用法汇总

前言

之前学习了numpy的一些方法和用法,觉得要记的东西太多,自认为学的有点杂乱,所以总体汇总整理了一下,全部是用表个整理的,看起来会很清晰吧!

数组的创建

多维数组(矩阵ndarray)
ndarray的基本属性

shape 维度的形状大小#4*5
ndim维度的个数     #3维
dtype数据类型      #int32
关键词举例解释
随机创建数组
rand()np.random.rand(3,4,5)取值范围在0~1之间 长宽4*5,厚度是1的三维数组
randint()np.random.randint(-10,10,5)取值范围是-10~10的整数,个数是5的一维数组
randint()np.random.randint(-10,10,(4,5))取值范围是-10~10的整数,个数是4*5的二维数组
uniform()np.random.uniform(10,20,3)取值范围10~20的小数,个数是3的一维数组,多维同上
序列创建数组
array()np.array([3,4,5,6,7])列表创建数组 取值范围是列表的值,多个元素个数相同的列表可组成多维数组
zeros()np.zeros((3,4))取值范围是0,是一个3*4的二维数组
ones()np.ones((3,4))取值范围是1,是一个3*4的二维数组
arange().reshape()np.arange(10).reshape(2,5)前面是取值范围,后面是数组的形状,取值范围的个数必须和数组个数一致
打乱顺序,重新排序
shuffle()1. nd9 = np.arange(10), 2. nd10 = np.random.shuffle(nd9), 3. print(nd9)这个函数是在原来的基础上排列,没有返回值
数据类型转换
astype()np.arange(10,dtype(np.int64)).astype(np.float64)将int64转为float641、astype()不在原始数组做操作,有返回值,返回的是更改数据类型的新数组2、在创建新数组的过程中,有dtype参数进行指定

numpy的矩阵计算

arr1 = np.arange(11,21)
arr2 = np.array([6,9,54,4,1,5,5,2,3,6])
arr3 = np.array([2,4,6,8,10])
arr4 = 10
arr5 = np.random.randint(10,20,(2,5))
arr6 = np.random.uniform(0,10,(2,5))
arr7 = np.random.rand(5)
关键词举例解释
相加(下标相同的相加)
数组和单个数字相加arr1+arr4数字和每个数组元素相加,返回一个新的数组
数组和数组相加arr1+arr2两个数组下标相同的元素相加,返回一个新的数组(注:两个数组元素个数必须一样)
相乘
数组和单个数字乘arr5*arr4数字和每个数组元素相乘,返回一个新的一维数组
一维数组和多维数组相乘arr5*arr7数组列数必须相同,列数相同的相乘)返回一个新的多维数组
多维维数组和多维数组相乘arr5*arr6数组的维度和形状大小必须一样

切片与索引

arr1 = np.arange(10)
arr3 = np.random.randint(0,99,(4,5))
arr4 = np.array([
    [2010,2011,2012],
    [2013,2014,2015],
    [2019,2020,2021]
])
关键词举例解释
一维数组
取单个数据arr1[2]取下标为2的元素
取连续多个数据arr1[0:3]取下标0~3的元素 (注意:不包括3)
取不连续多个数据arr1[0:8:2]取下标0~8,步长为2的元素 (注意:不包括8)
多维数组
取单独一行arr3[0]
取单独一列arr3[:,3]
取单独一行中的一列(单个数据)arr3 [0,2] 或 arr3[0][2]
取连续多行arr3[0:3]
取不连续多行arr3[[0,3]]
取连续多列arr3[:,0:3]
取不连续多列arr3[:,[0,3]]
取连续多行多列arr3[0:3,0:3]
取连续多行不连续多列arr3[0:3,[0,3]]
取不连续多行不连续多列arr3[[0,3]][:,[0,3]]
条件索引与(&) 或(竖) 非(~)
比较arr4>2013返回的是一个布尔值的数组 True 和 False
取值arr4[(arr4>2013)]返回的是一个符合条件的一维数组
与 取值arr4[(arr4<2016)&(arr4>2013)]返回的是一个符合条件的一维数组
或 取值arr4[(arr4>2019)竖(arr4<2013)]返回的是一个符合条件的一维数组
组合取值arr4[((arr4%4 == 0)&(arr4%100!=0))竖(arr4%400==0)]返回的是一个闰年年份的数组
数组转列表
第一种list(arr4)结果:[array([2010, 2011, 2012]), array([2013, 2014, 2015]), array([2019, 2020, 2021])]
第二种arr4.tolist()结果:[[2010, 2011, 2012], [2013, 2014, 2015], [2019, 2020, 2021]]

通用函数

arr1 = np.random.randint(-5,10,(4,5))
arr2 = np.arange(10,20).reshape((2,5))
arr3 = np.arange(10,20).reshape((2,5))
arr4 = np.arange(10,20).reshape(2,5)
arr5 = np.arange(20,30).reshape(2,5)
arr6 = np.arange(1,50).reshape(7,7)
arr7 = np.random.shuffle(arr6)
arr8 = np.random.randint(0,50,(4,4))
关键词举例解释
一元计算函数
向上取整np.ceil(arr1)例: 3.1 —> 4
向下取整np.floor(arr1)例: 3.9 —> 3
四舍五入np.rint(arr1)例: 3.5 —> 4
绝对值np.abs(arr1)例: -3.5 —> 3.5
取反np.negative(arr1)例: 3.5 —>-3.5 , 4.2 —> -4.2
平方np.square(arr1)例: 2—> 4 , 5 —> 25
平方根np.sqrt(np.abs(arr1))因为负数没有平方根,所以加了绝对值
判断是否有空值np.isnan(arr1)返回的是布尔值的数组 True 和 False
分成小数和整数np.modf(arr1)[0] 和 np.modf(arr1)[1][0] 代表小数,[1]代表整数
二元计算函数数组元素个数和形状大小应该相同
np.add(arr2,arr3)返回一个下标相同元素相加的新数组
np.subtract(arr2,arr3)返回一个下标相同元素相减的新数组
np.multiply(arr2,arr3)返回一个下标相同元素相乘的新数组
np.divide(arr2,arr3)返回一个下标相同元素相除的新数组
三元计算函数where(condition, x=None, y=None)根据条件,返回x,y 中的一个条件表达式,原始数据,不符合条件
根据条件替换np.where(arr5%2==0,arr5,100)条件表达式,原始数据,不符合条件要替换的数据,效果:[[ 20 100 22 100 24][100 26 100 28 100]]
例子np.where((np.rint(arr5)>20)&(np.rint(arr5)<30),100,arr5)四舍五入之后大于20小于30的数字,改为100
常用的元素统计函数
求平均值np.mean(arr6)返回的是一个平均数(单个值)
求和np.sum(arr6)返回的是一个总和值(单个值)
最大值np.max(arr6)返回的是一个最大值(单个值)
最小值np.min(arr6)返回的是一个最小值(单个值)
标准差np.std(arr6)返回的是一个标准差(单个值)
方差np.var(arr6)返回的是一个方差(单个值)
最大的下标索引np.argmax(arr7,axis=0)返回的是一个索引(单个值)
最小值的下标索引np.argmin(arr6)返回的是一个索引(单个值)
所有元素都式之前的累加np.cumsum(arr6)返回的是一个累加的数组
所有元素都式之前的累乘np.cumprod(arr6)返回的是一个累乘的数组
判断函数all---->全部符合条件返回True,否则返回False,any—>只要有一个符合条件的就返回True.没有行列的限制,返回单个True,和False,有行列的限制,返回每行或者列的True,和False,
allnp.all(arr5>20,axis=1)每一行的每一列全部符合条件的显示True
anynp.any(arr5>10,axis=0)每列只要有一个数符合条件就显示True

数组的增加,插入,删除,合并

arr1 = np.arange(10,20)
arr2 = np.arange(20,30)
arr3 = np.arange(20).reshape(4,5)
arr4 = np.arange(20).reshape(4,5)
arr5 = np.array([1,1,1,1,1])
arr6 = np.array([1,1,1,1])
关键词举例解释
增加np.append()
一维数组追加一个数np.append(arr1,100)返回一个一维数组
一维数组追加一个一维数组np.append(arr1,arr2)返回一个一维数组
多维维数组追加一个数np.append(arr3,100)返回一个一维数组
多维维数组追加一个一维数组np.append(arr3,arr1)返回一个一维数组
多维维数组追加一个多维数组np.append(arr3,arr4)返回一个一维数组
插入np.insert()原数组,要插入的下标位置,要插入的数据
一维数组插入一个数np.insert(arr1,0,100)返回一个数组
多维维数组插入一个数np.insert(arr3,0,100)返回一个一维数组
一维数组插入一个一维数组np.insert(arr1,0,arr2)返回一个一维数组
一维维数组插入一个列表np.insert(arr1,0,[100,200])返回一个一维数组
多维维数组插入一个列表np.insert(arr3,0,arr5,axis=0)返回一个一维数组,在每列的第一个插入
多维维数组插入一个列表np.insert(arr3,0,arr6,axis=1)返回一个一维数组,在每行的第一个插入
删除np.delete()
一维数组删除一个元素np.delete(arr1,0)返回一个一维数组
多维数组删除一行np.delete(arr3,0,axis=1)
多维数组删除一列np.delete(arr3,0,axis=0)
合并np.concatenate()
一维数组合并np.concatenate((arr1,arr2))返回一个一维数组
按列合并np.concatenate((arr3,arr4),axis=0)axis=0 按照列合并,增加的是多行数据
按行合并np.concatenate((arr3,arr4),axis=1)axis=1 按照行合并,增加的是多列数据

数组的集合函数

s1 = {10,20,30,40}
s2 = {10,100,20,200}
arr1 = np.arange(10,20)
arr2 = np.arange(0,5)
arr3 = np.array([100,10,10,10,20,30,40,50,1])
关键词举例解释
集合
交集s1&s2返回相同元素的集合,没有就返回空集合
并集s1竖s2两集合合并
数组
数组去重np.unique(arr3)返回一个没有重复元素的集合
数组交集np.intersect1d(arr1,arr3)返回返回相同元素的数组
数组并集np.intersect1d(arr1,arr3)返回一个合并的数组
数组差集np.setdiff1d(arr1,arr2)两个数组相减,前面是减数,后面是被减数
对称差集,二者差集的集合np.setxor1d(arr1,arr3)并集减差集
判断数组是否包含元素np.in1d(arr1,arr3)后面数组的元在不在前面数组里面,返回一个True和False数组

数组排序

arr1 = np.arange(10,20)
arr2 = np.arange(0,5)
arr3 = np.array([100,10,10,10,20,30,40,50,1])
关键词举例解释
第一种np.sort(arr1)复制一份再排序,升序
第二种arr1.sort(axis=-1)原来的基础上排序无返回值还是升序

文件读写

arr1 = np.arange(20).reshape(4,5)
arr2 = np.arange(20).reshape(4,5)
arr3 = np.array([
    ['col1','col2','col3'],
    ['java','python','php'],
    ['mysql','redis','mongodb']
])
关键词举例解释
保存
二进制保存np.save(‘a1’,arr1)保存可不写结尾
键值保存(更容易读取)np.savez(‘test’,nd1 = arr1,nd2 =arr2)多个的话键值结构更好取
读取
二进制读取arr3 = np.load(‘a1.npy’)load 将二进制转为数组
键值取np.load(‘test.npz’)前提是要是键值存的,多个的话键值结构更好取
指定文件读取np.savetxt(‘aaa.csv’,arr1,delimiter=’,’,fmt=’%s’)参数(要保存的文件 被保存的数据 以逗号分隔 文件格式)注意:csv文件元素用逗号隔开
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值