主页 > Python结构 > 正文

Numpy array数据的增、删、改、查实例

准备工作

增、删、改、查的办法有许多许多种,这儿只展示出常用的几种。

>>> import numpy as np 
>>> 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.66666667 3.33333333 5.   6.66666667 8.33333333 10.  ] 
a = np.logspace(0,4,5)#用于生成首位是10**0,末位是10**4,含5个数的等比数列。[ 1.00000000e+00 1.00000000e+01 1.00000000e+02 1.00000000e+03 1.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)# [-2 2 -2 2] 
cond = numpy.array([1,2,3,4]) 
a = numpy.where(cond>2,-2,2)# [ 2 2 -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)作用相同。


上一篇:Django中怎么防备CSRF跨站点恳求假造进犯
下一篇:Python后端架构演进

PythonTab微信大众号:

Python技能交流合作群 ( 请勿加多个群 ):

群1: 87464755

群2: 333646237

群3: 318130924

群4: 385100854