• 详解Numpy(基于jupyter notebook)


    1.创建数组

    #引入numpy包,以后np就代表numpy
    import numpy as np
    
    • 1
    • 2
    a=np.arange(10,30,2)#10为起点,30为终点,2为步长 array数据类型:数组
    a
    
    • 1
    • 2
    array([10, 12, 14, 16, 18, 20, 22, 24, 26, 28])
    
    • 1
    a3=[1,2,3] #数据类型:列表
    a3
    
    • 1
    • 2
    [1, 2, 3]
    
    • 1
    type(a3)#type()判断数据类型
    
    • 1
    list
    
    • 1
    #方法1:
    a = np.array([1,2,3]) #推荐
    a
    
    • 1
    • 2
    • 3
    array([1, 2, 3])
    
    • 1
    #建立多维数组
    a1 = np.array([[1,2,3],[7,8,9]])  
    a1
    
    • 1
    • 2
    • 3
    array([[1, 2, 3],
           [7, 8, 9]])
    
    • 1
    • 2
    #方法2:利用函数,常用的函数有zeros、ones和empty用法都类似,以zeros为例加以说明
    a=np.zeros(10)#生成10个元素,元素全为0   ones()生成的元素全为1
    a
    
    • 1
    • 2
    • 3
    array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
    
    • 1
    #方法2:利用函数,常用的函数有zeros、ones和empty用法都类似,以zeros为例加以说明
    a=np.ones(10)#生成10个元素,元素全为0   ones()生成的元素全为1
    a
    
    • 1
    • 2
    • 3
    array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
    
    • 1
    a=np.empty(10)#有可能是全0,也可能是随机数
    a
    
    • 1
    • 2
    array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
    
    • 1
    #方法2:arange函数,重要
    a=np.arange(10)#产生10个从0开始的自然数,arange()自然数组
    a
    
    • 1
    • 2
    • 3
    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    
    • 1
    a=np.linspace(10,30,12)#10为起始点,30为终止点,生成12个数,默认个数为50,随机产生
    a
    
    • 1
    • 2
    array([10.        , 11.81818182, 13.63636364, 15.45454545, 17.27272727,
           19.09090909, 20.90909091, 22.72727273, 24.54545455, 26.36363636,
           28.18181818, 30.        ])
    
    • 1
    • 2
    • 3
    a.ndim #判断a的维数
    
    • 1
    1
    
    • 1
    a.shape #判断a的形状,为12行(12个数)
    
    • 1
    (12,)
    
    • 1
    #改变形状reshape
    #一般先生成一个一维的,然后reshape为二维的,需要注意的是数据的一致性,10=2*5
    a=np.arange(10).reshape(2,5)
    a
    
    • 1
    • 2
    • 3
    • 4
    array([[0, 1, 2, 3, 4],
           [5, 6, 7, 8, 9]])
    
    • 1
    • 2
    a.shape
    
    • 1
    (2, 5)
    
    • 1

    2.数据类型

    a.dtype #判断a中元素类型,区别于type
    
    • 1
    dtype('int64')
    
    • 1
    a1=np.array([True,False,False,True])#bool型数据:元素只有True或者False
    a1.dtype
    
    • 1
    • 2
    dtype('bool')
    
    • 1

    数据类型及描述
    bool: 存储为一个字节的布尔值(真或假)
    int: 默认整数,相当于 C 的long,通常为int32或int64
    intc:相当于 C 的int,通常为int32或int64
    intp:用于索引的整数,相当于 C 的size_t,通常为int32或int64
    int8字节(-128 ~ 127)
    int16 :16 位整数(-32768 ~ 32767)
    int32: 32 位整数(-2147483648 ~ 2147483647)
    int64 64 位整数(-9223372036854775808 ~ 9223372036854775807)
    uint8: 8 位无符号整数(0 ~ 255)
    uint16: 16 位无符号整数(0 ~ 65535)
    uint32: 32 位无符号整数(0 ~ 4294967295)
    uint64: 64 位无符号整数(0 ~ 18446744073709551615)
    float_:float64的简写
    float16半精度浮点:符号位,5 位指数,10 位尾数
    float32单精度浮点:符号位,8 位指数,23 位尾数
    float64双精度浮点:符号位,11 位指数,52 位尾数
    complex_:complex128的简写
    complex64:复数,由两个 32 位浮点表示(实部和虚部)
    complex128:复数,由两个 64 位浮点表示(实部和虚部)
    NumPy 数字类型是dtype(数据类型)对象的实例,每个对象具有唯一的特征。 这些类型可以是np.bool_,np.float32等。

    a3 = np.array([1.2, 3.23, 7.88])
    a3.dtype
    
    • 1
    • 2
    dtype('float64')
    
    • 1
    a3.round(1) #a3元素保留位小数,四舍五入
    
    • 1
    array([1.2, 3.2, 7.9])
    
    • 1
    a4 = a3.astype(np.int32)#a3取整(int32)(去掉小数)
    a4
    
    • 1
    • 2
    array([1, 3, 7], dtype=int32)
    
    • 1
    a = np.array([True,True,False,True,False])
    a
    
    • 1
    • 2
    array([ True,  True, False,  True, False])
    
    • 1
    a.dtype
    
    • 1
    dtype('bool')
    
    • 1
    a5 = a.astype(np.float32) #a取单精度浮点数
    a5
    
    • 1
    • 2
    array([1., 1., 0., 1., 0.], dtype=float32)
    
    • 1
    a5.dtype
    
    • 1
    dtype('float32')
    
    • 1

    3.数组切片和索引

    a =np.arange(10)
    #前包括后不包括(从第0位开始),观察运行结果,注意切出来的仅仅是原来的一个视图,并没有改变原数据
    #思考一下为啥这样,有什么益处:取出部分数据进行分析,并不改表原来的总数据
    a[5:]
    
    • 1
    • 2
    • 3
    • 4
    array([5, 6, 7, 8, 9])
    
    • 1
    a
    
    • 1
    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    
    • 1
    a[5:8]#第五个到第八个元素
    
    • 1
    array([5, 6, 7])
    
    • 1
    #从0开始
    a[:5]#从0开始的前5个元素,默认步长为1 
    
    • 1
    • 2
    array([0, 1, 2, 3, 4])
    
    • 1
    #从0开始,到5,步长为2
    a[:5:2]
    
    • 1
    • 2
    array([0, 2, 4])
    
    • 1
    a[::2]#对所有元素,从0开始,步长为2
    
    • 1
    array([0, 2, 4, 6, 8])
    
    • 1
    a[-1]#取最后一个元素
    
    • 1
    9
    
    • 1
    a[:-1]# 除了最后一个取全部
    
    • 1
    array([0, 1, 2, 3, 4, 5, 6, 7, 8])
    
    • 1
    a[::-1]# 取从后向前(相反)的元素
    
    • 1
    array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
    
    • 1
    a[::-3]#从后向前取值,步长为3
    
    • 1
    array([9, 6, 3, 0])
    
    • 1
    a[2::-1]# 取从下标为2的元素翻转读取
    
    • 1
    array([2, 1, 0])
    
    • 1
    a = np.array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]])
    b = a[::-1, :]
    b
    
    • 1
    • 2
    • 3
    array([[5, 6, 7, 8, 9],
           [0, 1, 2, 3, 4]])
    
    • 1
    • 2

    4.Numpy的广播与数组操作

    a=np.arange(10).reshape(2,5)
    a
    
    • 1
    • 2
    array([[0, 1, 2, 3, 4],
           [5, 6, 7, 8, 9]])
    
    • 1
    • 2
    #当array与标量运算时,所有的元素都与该标量进行运算
    a+10
    
    • 1
    • 2
    array([[10, 11, 12, 13, 14],
           [15, 16, 17, 18, 19]])
    
    • 1
    • 2
    #相同形状的数组进行运算,则对应元素之间进行运算
    a+a
    
    • 1
    • 2
    array([[ 0,  2,  4,  6,  8],
           [10, 12, 14, 16, 18]])
    
    • 1
    • 2
    a1=np.arange(10,15)
    a1
    
    • 1
    • 2
    array([10, 11, 12, 13, 14])
    
    • 1
    a+a1#每一行均与a1相加
    
    • 1
    array([[10, 12, 14, 16, 18],
           [15, 17, 19, 21, 23]])
    
    • 1
    • 2

    5.数组合并与通用函数

    #合并 np.concatenate,注意多维数组的输入方式
    a = np.array([[1,2],[3,4]])
    a
    
    • 1
    • 2
    • 3
    array([[1, 2],
           [3, 4]])
    
    • 1
    • 2
    b = np.array([[5,6],[7,8]])
    b
    
    • 1
    • 2
    array([[5, 6],
           [7, 8]])
    
    • 1
    • 2
    np.concatenate([a,b])#默认是行叠加,沿行合并,或者说沿0轴合并
    
    • 1
    array([[1, 2],
           [3, 4],
           [5, 6],
           [7, 8]])
    
    • 1
    • 2
    • 3
    • 4
    np.concatenate([a,b],axis = 1)#对比 axis=1横轴(x轴),axis=0纵轴(y轴)默认axis=0
    
    • 1
    array([[1, 2, 5, 6],
           [3, 4, 7, 8]])
    
    • 1
    • 2
    a = np.array([1,2,3,4])
    b = np.array([5,6,7,8])
    np.stack([a,b])
    
    • 1
    • 2
    • 3
    array([[1, 2, 3, 4],
           [5, 6, 7, 8]])
    
    • 1
    • 2
    np.stack([a,b], axis = 1)
    
    • 1
    array([[1, 5],
           [2, 6],
           [3, 7],
           [4, 8]])
    
    • 1
    • 2
    • 3
    • 4
    a = np.array([1,2,1,1,3,4,3,5,6,1])
    np.unique(a)# 去重 去除重复元素:unique
    
    • 1
    • 2
    array([1, 2, 3, 4, 5, 6])
    
    • 1

    6.其他通用函数

    np.sqrt(a)
    np.sin(a)
    np.cos(a)
    np.add(a,b)
    np.sub(a,b)
    np.mod(a,b)#等价于 a%b 求模
    a//b #求余
    a == b #比较运算
    a>b
    ~(a>b)
    #均值
    a.mean()
    #等价于
    np.mean(a)
    #求和
    a.sum()
    #正态分布
    np.random.normal( size =(3,5))#normal正态分布
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
  • 相关阅读:
    tailwindcss 如何在 uniapp 中使用
    windows下安装hbase
    pytorch-过拟合&欠拟合
    Spark - RDD 的分区和Shuffle
    Selenium工作原理详解
    聊聊ChatGLM3多用户并发API调用的问题
    Linux中jar包实现自动重启、开机自启方案
    时间复杂度与空间复杂度
    2023版 STM32实战11 SPI总线读写W25Q
    智源AI日报(2022-08-30): 华为谢凌曦:关于视觉识别领域发展的个人观点
  • 原文地址:https://blog.csdn.net/qq_34972053/article/details/132587388