zoukankan      html  css  js  c++  java
  • 初识人工智能(一):数据分析(二):numpy科学计算基础库(一)

    1. numpy科学计算基础库

    1.1 什么是numpy

    NumPy(Numerical Python)是Python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

    NumPy的前身Numeric最早是由Jim Hugunin与其它协作者共同开发,2005 年,Travis Oliphant在Numeric中结合了另一个同性质的程序库Numarray的特色,并加入了其它扩展而开发了NumPy。NumPy为开放源代码并且由许多协作者共同维护开发。

    NumPy是一个运行速度非常快的数学库,主要用于数组计算,包含:

    • 一个强大的N维数组对象 ndarray
    • 广播功能函数
    • 整合 C/C++/Fortran 代码的工具
    • 线性代数、傅里叶变换、随机数生成等功能

    1.2 创建数组(矩阵)

    # coding=utf-8
    import numpy as np
    
    #使用numpy生成数组,得到ndarray的类型
    t1 = np.array([1,2,3,])
    print(t1)
    print(type(t1))
    
    t2 = np.array(range(10))
    print(t2)
    print(type(t2))
    
    t3 = np.arange(4,10,2)
    print(t3)
    print(type(t3))
    print(t3.dtype)

    运行结果

    1.3 数据类型

    名称描述
    bool_ 布尔型数据类型(True 或者 False)
    int_ 默认的整数类型(类似于 C 语言中的 long,int32 或 int64)
    intc 与 C 的 int 类型一样,一般是 int32 或 int 64
    intp 用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64)
    int8 字节(-128 to 127)
    int16 整数(-32768 to 32767)
    int32 整数(-2147483648 to 2147483647)
    int64 整数(-9223372036854775808 to 9223372036854775807)
    uint8 无符号整数(0 to 255)
    uint16 无符号整数(0 to 65535)
    uint32 无符号整数(0 to 4294967295)
    uint64 无符号整数(0 to 18446744073709551615)
    float_ float64 类型的简写
    float16 半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位
    float32 单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位
    float64 双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位
    complex_ complex128 类型的简写,即 128 位复数
    complex64 复数,表示双 32 位浮点数(实数部分和虚数部分)
    complex128 复数,表示双 64 位浮点数(实数部分和虚数部分)
    # coding=utf-8
    import numpy as np
    import random
    
    # int8, int16, int32, int64 四种数据类型可以使用字符串 'i1', 'i2','i4','i8' 代替
    t1 = np.array(range(1,4),dtype="i1")
    print(t1)
    print(t1.dtype)
    
    ##numpy中的bool类型
    t2 = np.array([1,1,0,1,0,0],dtype=bool)
    print(t2)
    print(t2.dtype)
    
    #调整数据类型
    t3 = t2.astype("int8")
    print(t3)
    print(t3.dtype)
    
    #numpy中的小数
    t4 = np.array([random.random() for i in range(10)])
    print(t4)
    print(t4.dtype)
    
    t5 = np.round(t4,2)
    print(t5)

    运行结果:

    1.4 数组的形状

    # coding=utf-8
    import numpy as np
    
    a = np.array([[3,4,5,6,7,8],[4,5,6,7,8,9]])
    print(a)
    
    #查看数组形状
    print(a.shape)
    
    #修改数组形状
    print(a.reshape(3,4))
    
    #原数组形状不变
    print(a.shape)
    
    b = a.reshape(3,4)
    
    print(b.shape)
    
    print(b)
    
    #把数组转化为1维度数据
    print(b.reshape(1,12))
    
    print(b.flatten())

    运行结果:

    1.5 数组和数的计算

    # coding=utf-8
    import numpy as np
    
    a = np.array([[3,4,5,6,7,8],[4,5,6,7,8,9]])
    
    print(a)
    
    #加法减法
    print(a+5)
    print(a-5)
    
    #乘法除法
    print(a*3)
    print(a/3)

    运行结果:

    1.6 数组和数组的计算

    # coding=utf-8
    import numpy as np
    
    a = np.array([[3,4,5,6,7,8],[4,5,6,7,8,9]])
    
    b = np.array([[21,22,23,24,25,26],[27,28,29,30,31,32]])
    
    #数组和数组的加减法
    print(a+b)
    print(a-b)
    
    #数组和数组的乘除法
    print(a*b)
    print(a/b)

    运行结果:

    不同维度数组的计算:

    # coding=utf-8
    import numpy as np
    
    a = np.array([[3,4,5,6,7,8],[4,5,6,7,8,9]])
    
    c = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
    
    #不同维度的数组计算
    print(a*c)

    运行结果:

    # coding=utf-8
    import numpy as np
    #2行6列的数组
    a = np.array([[3,4,5,6,7,8],[4,5,6,7,8,9]])
    #1行6列的数组
    c = np.array([1,2,3,4,5,6])
    
    print(a-c)
    print(a*c)

    运行结果:

    # coding=utf-8
    import numpy as np
    #2行6列的数组
    a = np.array([[3,4,5,6,7,8],[4,5,6,7,8,9]])
    #1行6列的数组
    c = np.array([[1],[2]])
    
    print(a+c)
    print(a*c)
    print(c*a)

    运行结果:

  • 相关阅读:
    bzoj1009
    bzoj1576 3694
    bzoj3143
    bzoj1391
    bzoj2729
    bzoj2653
    bzoj3261
    bzoj2326
    人件
    优秀的产品
  • 原文地址:https://www.cnblogs.com/liuhui0308/p/12632662.html
Copyright © 2011-2022 走看看