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

增、删、改、查的方法有很多很多种,这里只展示出常用的几种。

  1. >>> import numpy as np
  2. >>> a = np.array([[ 1, 2],[ 3, 4],[ 5, 6]]) #创建3行2列二维数组。
  3. >>> a
  4. array([[ 1, 2],
  5. [ 3, 4],
  6. [ 5, 6]])
  7. >>> a = np.zeros( 6) #创建长度为6的,元素都是0一维数组
  8. >>> a = np.zeros(( 2, 3)) #创建3行2列,元素都是0的二维数组
  9. >>> a = np.ones(( 2, 3)) #创建3行2列,元素都是1的二维数组
  10. >>> a = np.empty(( 2, 3)) #创建3行2列,未初始化的二维数组
  11. >>> a = np.arange( 6) #创建长度为6的,元素都是0一维数组array([0, 1, 2, 3, 4, 5])
  12. >>> a = np.arange( 1, 7, 1) #结果与np.arange(6)一样。第一,二个参数意思是数值从1〜6,不包括7.第三个参数表步长为1.
  13. a = np.linspace( 0, 10, 7) # 生成首位是0,末位是10,含7个数的等差数列[ 0. 1.66666667 3.33333333 5. 6.66666667 8.33333333 10. ]
  14. 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]

  1. >>> a = np.array([[ 1, 2],[ 3, 4],[ 5, 6]])
  2. >>> b = np.array([[ 10, 20],[ 30, 40],[ 50, 60]])
  3. >>> np.vstack((a,b))
  4. array([[ 1, 2],
  5. [ 3, 4],
  6. [ 5, 6],
  7. [ 10, 20],
  8. [ 30, 40],
  9. [ 50, 60]])
  10. >>> np.hstack((a,b))
  11. array([[ 1, 2, 10, 20],
  12. [ 3, 4, 30, 40],
  13. [ 5, 6, 50, 60]])

不同维数的数组直接相加显然是不允许的。但是可以用一个n行列向量和一个m列行向量构造出一个n×m矩阵

  1. >>> a = np.array([[ 1],[ 2]])
  2. >>> a
  3. array([[ 1],
  4. [ 2]])
  5. >>> b=([[ 10, 20, 30]]) #生成一个list,注意,不是np.array。
  6. >>> b
  7. [[ 10, 20, 30]]
  8. >>> a+b
  9. array([[ 11, 21, 31],
  10. [ 12, 22, 32]])
  11. >>> c = np.array([ 10, 20, 30])
  12. >>> c
  13. array([ 10, 20, 30])
  14. >>> c.shape
  15. ( 3,)
  16. >>> a+c
  17. array([[ 11, 21, 31],
  18. [ 12, 22, 32]])

  1. >>> a
  2. array([[ 1, 2],
  3. [ 3, 4],
  4. [ 5, 6]])
  5. >>> a[ 0] # array([1, 2])
  6. >>> a[ 0][ 1] #2
  7. >>> a[ 0, 1] #2
  8. >>> b = np.arange( 6) #array([0, 1, 2, 3, 4, 5])
  9. >>> b[ 1: 3] #右边开区间array([1, 2])
  10. >>> b[: 3] #左边默认为 0array([0, 1, 2])
  11. >>> b[ 3:] #右边默认为元素个数array([3, 4, 5])
  12. >>> b[ 0: 4: 2] #下标递增2array([0, 2])

NumPy的where函数使用

np.where(condition, x, y),第一个参数为一个布尔数组,第二个参数和第三个参数可以是标量也可以是数组。

  1. cond = numpy.array([ True, False, True, False])
  2. a = numpy.where(cond, -2, 2) # [-2 2 -2 2]
  3. cond = numpy.array([ 1, 2, 3, 4])
  4. a = numpy.where(cond> 2, -2, 2) # [ 2 2 -2 -2]
  5. b1 = numpy.array([ -1, -2, -3, -4])
  6. b2 = numpy.array([ 1, 2, 3, 4])
  7. a = numpy.where(cond> 2,b1,b2) # 长度须匹配# [1,2,-3,-4]

  1. >>> a = np.array([[ 1, 2],[ 3, 4],[ 5, 6]])
  2. >>> a[ 0] = [ 11, 22] #修改第一行数组[1,2]为[11,22]。
  3. >>> a[ 0][ 0] = 111 #修改第一个元素为111,修改后,第一个元素“1”改为“111”。
  4. >>> a = np.array([[ 1, 2],[ 3, 4],[ 5, 6]])
  5. >>> b = np.array([[ 10, 20],[ 30, 40],[ 50, 60]])
  6. >>> a+b #加法必须在两个相同大小的数组键间运算。
  7. array([[ 11, 22],
  8. [ 33, 44],
  9. [ 55, 66]])

不同维数的数组直接相加显然是不允许的。但是可以用一个n行列向量和一个m列行向量构造出一个n×m矩阵

  1. >>> a = np.array([[ 1],[ 2]])
  2. >>> a
  3. array([[ 1],
  4. [ 2]])
  5. >>> b=([[ 10, 20, 30]]) #生成一个list,注意,不是np.array。
  6. >>> b
  7. [[ 10, 20, 30]]
  8. >>> a+b
  9. array([[ 11, 21, 31],
  10. [ 12, 22, 32]])
  11. >>> c = np.array([ 10, 20, 30])
  12. >>> c
  13. array([ 10, 20, 30])
  14. >>> c.shape
  15. ( 3,)
  16. >>> a+c
  17. array([[ 11, 21, 31],
  18. [ 12, 22, 32]])

数组和一个数字的加减乘除的运算,相当于一个广播,把这个运算广播到各个元素中去。

  1. >>> a = np.array([[ 1, 2],[ 3, 4],[ 5, 6]])
  2. >>> a* 2 #相当于a中各个元素都乘以2.类似于广播。
  3. array([[ 2, 4],
  4. [ 6, 8],
  5. [ 10, 12]])
  6. >>> a** 2
  7. array([[ 1, 4],
  8. [ 9, 16],
  9. [ 25, 36]])
  10. >>> a> 3
  11. array([[ False, False],
  12. [ False, True],
  13. [ True, True]])
  14. >>> a+ 3
  15. array([[ 4, 5],
  16. [ 6, 7],
  17. [ 8, 9]])
  18. >>> a/ 2
  19. array([[ 0.5, 1. ],
  20. [ 1.5, 2. ],
  21. [ 2.5, 3. ]])

方法一:

利用查找中的方法,比如a=a[0],操作完居后,a的行数只剩一行了。

  1. >>> a = np.array([[ 1, 2],[ 3, 4],[ 5, 6]])
  2. >>> a[ 0]
  3. array([ 1, 2])

方法二:

  1. >>> a = np.array([[ 1, 2],[ 3, 4],[ 5, 6]])
  2. >>> np.delete(a, 1,axis = 0) #删除a的第二行。
  3. array([[ 1, 2],
  4. [ 5, 6]])
  5. >>> np.delete(a,( 1, 2), 0) #删除a的第二,三行。
  6. array([[ 1, 2]])
  7. >>> np.delete(a, 1,axis = 1) #删除a的第二列。
  8. array([[ 1],
  9. [ 3],
  10. [ 5]])

方法三:

先分割,再按切片a=a[0]赋值。

  1. >>> a = np.array([[ 1, 2],[ 3, 4],[ 5, 6]])
  2. >>> np.hsplit(a, 2) #水平分割(搞不懂,明明是垂直分割嘛?)
  3. [array([[ 1],
  4. [ 3],
  5. [ 5]]), array([[ 2],
  6. [ 4],
  7. [ 6]])]
  8. >>> np.split(a, 2,axis = 1) #与np.hsplit(a,2)效果一样。
  9. >>> np.vsplit(a, 3)
  10. [array([[ 1, 2]]), array([[ 3, 4]]), array([[ 5, 6]])]
  11. >>> np.split(a, 3,axis = 0) #与np.vsplit(a,3)效果一样。

猜你喜欢

转载自blog.csdn.net/u014182497/article/details/80852876