Numpy array数据的增、删、改、查实例
准备工作:
增、删、改、查的方法有很多很多种,这里只展示出常用的几种。
>>>importnumpyasnp >>>a=np.array([[1,2],[3,4],[5,6]])#创建3行2列二维数组。 >>>a array([[1,2], [3,4], [5,6]]) >>>a=np.zeros(6)#创建长度为6的,元素都是0一维数组 >>>a=np.zeros((2,3))#创建3行2列,元素都是0的二维数组 >>>a=np.ones((2,3))#创建3行2列,元素都是1的二维数组 >>>a=np.empty((2,3))#创建3行2列,未初始化的二维数组 >>>a=np.arange(6)#创建长度为6的,元素都是0一维数组array([0,1,2,3,4,5]) >>>a=np.arange(1,7,1)#结果与np.arange(6)一样。第一,二个参数意思是数值从1〜6,不包括7.第三个参数表步长为1. a=np.linspace(0,10,7)#生成首位是0,末位是10,含7个数的等差数列[0.1.666666673.333333335.6.666666678.3333333310.] a=np.logspace(0,4,5)#用于生成首位是10**0,末位是10**4,含5个数的等比数列。[1.00000000e+001.00000000e+011.00000000e+021.00000000e+031.00000000e+04]
增
>>>a=np.array([[1,2],[3,4],[5,6]]) >>>b=np.array([[10,20],[30,40],[50,60]]) >>>np.vstack((a,b)) array([[1,2], [3,4], [5,6], [10,20], [30,40], [50,60]]) >>>np.hstack((a,b)) array([[1,2,10,20], [3,4,30,40], [5,6,50,60]])
不同维数的数组直接相加显然是不允许的。但是可以用一个n行列向量和一个m列行向量构造出一个n×m矩阵
>>>a=np.array([[1],[2]]) >>>a array([[1], [2]]) >>>b=([[10,20,30]])#生成一个list,注意,不是np.array。 >>>b [[10,20,30]] >>>a+b array([[11,21,31], [12,22,32]]) >>>c=np.array([10,20,30]) >>>c array([10,20,30]) >>>c.shape (3,) >>>a+c array([[11,21,31], [12,22,32]])
查
>>>a array([[1,2], [3,4], [5,6]]) >>>a[0]#array([1,2]) >>>a[0][1]#2 >>>a[0,1]#2 >>>b=np.arange(6)#array([0,1,2,3,4,5]) >>>b[1:3]#右边开区间array([1,2]) >>>b[:3]#左边默认为0array([0,1,2]) >>>b[3:]#右边默认为元素个数array([3,4,5]) >>>b[0:4:2]#下标递增2array([0,2])
NumPy的where函数使用
np.where(condition,x,y),第一个参数为一个布尔数组,第二个参数和第三个参数可以是标量也可以是数组。
cond=numpy.array([True,False,True,False]) a=numpy.where(cond,-2,2)#[-22-22] cond=numpy.array([1,2,3,4]) a=numpy.where(cond>2,-2,2)#[22-2-2] b1=numpy.array([-1,-2,-3,-4]) b2=numpy.array([1,2,3,4]) a=numpy.where(cond>2,b1,b2)#长度须匹配#[1,2,-3,-4]
改
>>>a=np.array([[1,2],[3,4],[5,6]]) >>>a[0]=[11,22]#修改第一行数组[1,2]为[11,22]。 >>>a[0][0]=111#修改第一个元素为111,修改后,第一个元素“1”改为“111”。 >>>a=np.array([[1,2],[3,4],[5,6]]) >>>b=np.array([[10,20],[30,40],[50,60]]) >>>a+b#加法必须在两个相同大小的数组键间运算。 array([[11,22], [33,44], [55,66]])
不同维数的数组直接相加显然是不允许的。但是可以用一个n行列向量和一个m列行向量构造出一个n×m矩阵
>>>a=np.array([[1],[2]]) >>>a array([[1], [2]]) >>>b=([[10,20,30]])#生成一个list,注意,不是np.array。 >>>b [[10,20,30]] >>>a+b array([[11,21,31], [12,22,32]]) >>>c=np.array([10,20,30]) >>>c array([10,20,30]) >>>c.shape (3,) >>>a+c array([[11,21,31], [12,22,32]])
数组和一个数字的加减乘除的运算,相当于一个广播,把这个运算广播到各个元素中去。
>>>a=np.array([[1,2],[3,4],[5,6]]) >>>a*2#相当于a中各个元素都乘以2.类似于广播。 array([[2,4], [6,8], [10,12]]) >>>a**2 array([[1,4], [9,16], [25,36]]) >>>a>3 array([[False,False], [False,True], [True,True]]) >>>a+3 array([[4,5], [6,7], [8,9]]) >>>a/2 array([[0.5,1.], [1.5,2.], [2.5,3.]])
删
方法一:
利用查找中的方法,比如a=a[0],操作完居后,a的行数只剩一行了。
>>>a=np.array([[1,2],[3,4],[5,6]]) >>>a[0] array([1,2])
方法二:
>>>a=np.array([[1,2],[3,4],[5,6]]) >>>np.delete(a,1,axis=0)#删除a的第二行。 array([[1,2], [5,6]]) >>>np.delete(a,(1,2),0)#删除a的第二,三行。 array([[1,2]]) >>>np.delete(a,1,axis=1)#删除a的第二列。 array([[1], [3], [5]])
方法三:
先分割,再按切片a=a[0]赋值。
>>>a=np.array([[1,2],[3,4],[5,6]]) >>>np.hsplit(a,2)#水平分割(搞不懂,明明是垂直分割嘛?) [array([[1], [3], [5]]),array([[2], [4], [6]])] >>>np.split(a,2,axis=1)#与np.hsplit(a,2)效果一样。 >>>np.vsplit(a,3) [array([[1,2]]),array([[3,4]]),array([[5,6]])] >>>np.split(a,3,axis=0)#与np.vsplit(a,3)效果一样。
以上这篇Numpyarray数据的增、删、改、查实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。