• 技术文章 >后端开发 >Python教程

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

    不言不言2018-06-04 16:11:17原创1811
    这篇文章主要介绍了关于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)效果一样。

    相关推荐:

    numpy中以文本的方式存储以及读取数据方法

    以上就是Numpy array数据的增、删、改、查的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:Numpy array 数据
    上一篇:numpy中以文本的方式存储以及读取数据方法 下一篇:python实现判断一个字符串是否是合法IP地址
    20期PHP线上班

    相关文章推荐

    精选22门好课,价值3725元,开通VIP免费学习!• 完全掌握Python中的双下方法• Python解析参数的三种方法详解• Python数据类型简介之numpy• python虚拟环境配置与管理• 总结分享Python冷门的技巧
    1/1

    PHP中文网