zoukankan      html  css  js  c++  java
  • NumPy 基本语法汇总

    NumPy 数据结构属性以及数组创建

    NumpyPython科学计算库,用于快速处理任意维度的数组,可以处理N维数组, 支持向量化运算,其底层是由C语言编写的,运算速度相比较PYTHON会非常快, 这也是大数据常用numpy来计算的原因,其对数组的操作速度不受python解释器的影响。

    ----首先先试一下用numpy和python实现1+2+3+......+1亿的运算时间----

    
    
    8
    import numpy as np
    import time
    arr = np.arange(100000000)
    print('*'*30)
    %time np.sum(arr)
    print('*'*30)
    %time sum(arr)
    
    
     
    ******************************
    Wall time: 39.9 ms
    ******************************
    Wall time: 9.37 s
    
     
    <timed eval>:1: RuntimeWarning: overflow encountered in long_scalars
    
    8
    887459712
    
    
     

    1、 ndarray属性

    属性描述
    ndarray.shape 数组维度的元组
    ndarray.ndim 数组维数
    ndarray.size 数组中的元素数量
    ndarray.itemsize 一个数组元素的长度(字节)
    ndarray.dtype 数组元素的类型
    
    
    9
    import numpy as np
    a = np.array([1,2,3])
    b = np.array([[1,2,3],[4,5,6]])
    c = np.array([[[1,2],[3,4]], [[5,6],[7,8]]])
    print('*'*30)
    print('a的数据维度是:',a.shape) #数组的维度的元组,当数组是一维时候,表示有几列
    print('b的数据维度是:',b.shape) #两行三列
    print('c的数据维度是:',c.shape) #三行三列
    print('上面三个数组的维度分别是:',a.ndim,b.ndim,c.ndim)
    print('上面三个数组的元素个数分别是:',a.size,b.size,c.size)
    print(c.dtype) #数组的类型
    
     
    ******************************
    a的数据维度是: (3,)
    b的数据维度是: (2, 3)
    c的数据维度是: (2, 2, 2)
    上面三个数组的维度分别是: 1 2 3
    上面三个数组的元素个数分别是: 3 6 8
    int32
    
    
    
     

    2、ndarray元素数据类型

    ndarray.dtype查看数组元素的数据类型,NumPy支持比Python更多的数值类型,得益于它本身还是有C语言编写。

    数据类型描述唯一标识符
    bool 用一个字节存储的布尔类型(True或False) 'b'
    int8 一个字节大小,-128 至 127 'i'
    int16 整数,16 位整数(-32768 ~ 32767) 'i2'
    int32 整数,32 位整数(-2147483648 ~ 2147483647) 'i4'
    int64 整数,64 位整数(-9223372036854775808 ~ 9223372036854775807) 'i8'
    uint8 无符号整数,0 至 255 'u'
    uint16 无符号整数,0 至 65535 'u2'
    uint32 无符号整数,0 至 2 ** 32 - 1 'u4'
    uint64 无符号整数,0 至 2 ** 64 - 1 'u8'
    float16 半精度浮点数:16位,正负号1位,指数5位,精度10位 'f2'
    float32 单精度浮点数:32位,正负号1位,指数8位,精度23位 'f4'
    float64 双精度浮点数:64位,正负号1位,指数11位,精度52位 'f8'
    complex64 复数,分别用两个32位浮点数表示实部和虚部 'c8'
    complex128 复数,分别用两个64位浮点数表示实部和虚部 'c16'
    object_ python对象 'O'
    string_ 字符串 'S'
    unicode_ unicode类型 'U'
    
    
     

    3、ndarray创建结构化数据类型

    
    
    10
    import numpy as np
    dt = np.dtype([('name','S20'), ('price', 'f4'),
                      ('weight', 'i1')])
    nd = np.array([('meat', 15.6, 2),('apple', 6, 2)],dtype=dt)
    print(nd)
    
    
     
    [(b'meat', 15.6, 2) (b'apple',  6. , 2)]
    
    
    
     

    4、ndarray数组的创建

    1. 从其他Python结构转换(例如:列表,元组)使用array(深拷贝),asarray(浅拷贝)方法
    2. 内在的numpy数组创建对象arange,zeros,ones......等
    3. 通过使用字符串或缓冲区从原始字节创建数组
    4. 使用特殊库函数random,
    
    
    11
    #从python列表结构转换,
    import numpy as np
    a = [1,2,3,4,5,6]
    print(np.array(a))
    
     
    [1 2 3 4 5 6]
    
    
    
    12
    #内在的numpy数组创建对象arange,np.arange(start,stop,step,dtype)
    import numpy as np
    a = np.arange(10)
    b = np.zeros(10)
    c = np.ones(10)
    d = np.full((3,2),7)#构造3行两列的数组,指定填充数为7
    print(a,b,c,d,sep='\n**************\n')
    
     
    [0 1 2 3 4 5 6 7 8 9]
    **************
    [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
    **************
    [1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
    **************
    [[7 7]
     [7 7]
     [7 7]]
    
    
    
    13
    #使用特殊库函数random(重要)根据给定的维度生成**[0, 1)**之间的随机数
    import numpy as np
    a = np.random.random() #创建一个随机数0-1之间
    b = np.random.random(10) #创建一个一维的列表数组,0-1之间
    c = np.random.random((5,2)) #创建一个二维数组10行2列,0-1之间
    print(a,b,c,sep='\n**************\n')
    
     
    0.9138248243834629
    **************
    [0.22414865 0.29108704 0.95452629 0.66855175 0.00150192 0.51841556
     0.50442709 0.74724399 0.00856524 0.3938695 ]
    **************
    [[0.32686679 0.14522227]
     [0.26809541 0.85052332]
     [0.53518224 0.62633159]
     [0.31946848 0.1022813 ]
     [0.70060205 0.31761763]]
    
    
    
    14
    #特殊函数ramdom的补充,randint
    #np.random.randint(low,high=None,size=None,dtype='l')`:生成取值区间为[low, high)的随机整数,size:数组维度大小,dtype:np.int
    a = np.random.randint(3,size=3) #生成3个[0,3)之间的整数
    b = np.random.randint(3,5) #size=None,生成一个[1,5)之间随机的一个整数
    c = np.random.randint(1,5,size=(3,2)) #生成一个二维数组
    print(a,b,c,sep='\n**************\n')
    
    
     
    [0 0 0]
    **************
    3
    **************
    [[3 4]
     [1 1]
     [2 4]]
    
    志同道合一起学习,欢迎加入QQ群:878749917
  • 相关阅读:
    spring boot 与 spring cloud 版本映射
    Java锁
    并发编程(二)
    并发工具类和线程池
    并发编程
    Map双列集合(二)
    Map双列集合(一)
    单列集合List
    类加载
    JVM字节码与代码优化
  • 原文地址:https://www.cnblogs.com/gujianjian/p/15319892.html
Copyright © 2011-2022 走看看