zoukankan      html  css  js  c++  java
  • Numpy 机器学习三剑客之Numpy

    NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机器学习框架的基础库!

    Numpy简单创建数组

    nlist = np.array([1,2,3])
    print(nlist)
    #[1 2 3]

    Numpy查看数组属性

    #ndim方法用来查看数组维度
    print(nlist.ndim)   #2
    
    #二维数组
    nlist_2 = np.array([[1,2,3],[4,5,6]])
    print(nlist_2)
    print(nlist_2.ndim)
    
    #[[1 2 3]
    #  [4 5 6]]
    #  2
    
    #使用shape属性来大印多维数组的形状
    print(nlist.shape,nlist_2.shape)
    #(3,) (2, 3)
    
    #使用size方法来打印多维数组的元素个数
    print(np.size(nlist))
    print(np.size(nlist_2))
    # 3
    # 6
    
    #打印numpy多维数组的数据类型
    print(type(nlist))
    #<class 'numpy.ndarray'>
    
    #使用dtype属性打印多维数组内部元素的数据类型
    print(nlist.dtype)
    #itemsizes属性,多维数组中的数据类型大小,字节
    print(nlist.itemsize)
    #data属性 打印数据缓冲区 buffer
    print(nlist.data)
    # int32
    #   4
    #  <memory at 0x0000023047DB5C48>

    快速创建N维数组的api函数

    #使用ones方法,自动生成元素为1的多维数组
    nlist_ones = np.ones((4,4))
    print(nlist_ones)
    print(nlist_ones.dtype)
    
    #[[1. 1. 1. 1.]
    # [1. 1. 1. 1.]
    # [1. 1. 1. 1.]
    # [1. 1. 1. 1.]]
    #float64
    
    #zeros
    nlist_zeros = np.zeros((4,4))
    print(nlist_zeros)
    #[[0. 0. 0. 0.]
    # [0. 0. 0. 0.]
    # [0. 0. 0. 0.]
    # [0. 0. 0. 0.]]
    
    #使用empty方法来生成随机多维数组,使用第二参数指定数据类型
      nlistempty = np.empty([2,2])
     nlist_empty = np.empty([2,2],dtype=np.int)
    print(nlistempty)
     print(nlist_empty)
    #[[5.e-324 5.e-324]
    # [0.e+000 0.e+000]]
    #[[0 0]
    # [0 0]]

    使用reshape方法来反向生成多维数组
    nlist_3 = np.array(range(24)).reshape((3,2,4))
    print(nlist_3)
    print(nlist_3.shape)
    nlist_float = np.array([1.0,2.0])
    print(nlist_float.dtype)
    #使用字符串
    nlist_string=np.array(['1','2','3'])
    print(nlist_string.dtype)
    
    #[[[ 0  1  2  3]
    #  [ 4  5  6  7]]
    #
    # [[ 8  9 10 11]
    #  [12 13 14 15]]
    #
    # [[16 17 18 19]
    #  [20 21 22 23]]]
    #(3, 2, 4)
    #float64
    #<U1
    把普通list转换为数组
    x = [1,2,3]
    x = [(1,2,3),(4,5)]
    nlist = np.asarray(x)
    print(nlist)
    
    #[(1, 2, 3) (4, 5)]
    frombuffer 通过字符串(buffer内存地址)切片来生成多维数组
    my_str = b"hello world"
    nlist_str = np.frombuffer(my_str,dtype='S1')
    print(nlist_str)
    
    #[b'h' b'e' b'l' b'l' b'o' b' ' b'w' b'o' b'r' b'l' b'd']
    axis 属性可以指定当前多维数组的维度(0表示行,1表示列 keepdims表示结构)
    sum0 = np.sum(x,axis=0,keepdims=False)
    print(sum0)
    sum1 = np.sum(x,axis=1,keepdims=1)
    sum = np.sum(x,axis=1,keepdims=0)
    print(sum1,sum)
    
    #[4 6]
    #[[3]
    # [7]]
    #[3 7]
    维度级的运算
    a = np.array([[1,2],[3,4],[5,6]])
    b = np.array([[10,20],[30,40],[50,60]])
    
    #vstack方法
    suma = np.vstack((a,b))
    print(suma)
    print("-"*30)
    #hstack方法
    sumb = np.hstack((a,b))
    print(sumb)
    
    #[[ 1  2]
    #[ 3  4]
    # [ 5  6]
    # [10 20]
    # [30 40]
    # [50 60]]
    ------------------------------
    #[[ 1  2 10 20]
    # [ 3  4 30 40]
    # [ 5  6 50 60]]
    多维数组的调用
    nlist=np.array([[1,2],[3,4],[5,6]])
    print(nlist[1][1])
    print(nlist[1,1])
    #删除方法 delete
    #s删除nlist第二行
    print(np.delete(nlist,1,axis=0))
    print(np.delete(nlist,0,axis=1))
    
    #4
    #4
    #[[1 2]
    # [5 6]]
    #[[2]
    # [4]
    # [6]]

    **未完待续

  • 相关阅读:
    9.20 kali中的Metasploit生成木马控制windows 以及http协议相关
    9.19 接上一篇,jss
    9.18 DNS服务安装
    9.17 ubuntu安装LAMP服务
    线程的安全问题
    java实现多线程(上)
    异常处理
    抽象方法和接口、内部类
    面向对象的一些关键字和方法
    Object类和包装类的一些方法
  • 原文地址:https://www.cnblogs.com/xcsg/p/10461095.html
Copyright © 2011-2022 走看看