liuyubobobo《机器学习》学习笔记(四)

numpy和matplotlib (1)


1.如何创建一个numpy.array?
import numpy as np
nparr = np.array([i for i in range(10)])
# array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
nparr.dtype
# dtype('int32')

其他的创建方式

  • zeros()

    np.zeros(10, dtype=int)
    # array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
    np.zeros(shape=(3, 5), dtype=int)
    # array([[0, 0, 0, 0, 0],
    #        [0, 0, 0, 0, 0],
    #        [0, 0, 0, 0, 0]])
    
  • ones()

    np.ones(shape=(3, 5))
    # array([[1., 1., 1., 1., 1.],
    #        [1., 1., 1., 1., 1.],
    #        [1., 1., 1., 1., 1.]])
    
  • full()

    np.full(shape=(3, 5), fill_value=666)
    # array([[666, 666, 666, 666, 666],
    #        [666, 666, 666, 666, 666],
    #        [666, 666, 666, 666, 666]])
    
  • arange()

    np.arange(0, 20, 2)   # 参数同range()
    # array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])
    np.arange(0, 1, 0.2)  # 步长可以是浮点数
    # array([0. , 0.2, 0.4, 0.6, 0.8])
    
  • linspace()

    numpy.linspace(a, b, n) 在[a, b]中等长截取n个点,包括a和b

    np.linspace(0, 10, 4)
    # array([ 0.        ,  3.33333333,  6.66666667, 10.        ])
    np.linspace(0, 20, 11)
    # array([ 0.,  2.,  4.,  6.,  8., 10., 12., 14., 16., 18., 20.])
    
2.numpy.random随机数
  • randint() 产生整型

    np.random.randint(0, 10)   # [a, b)
    # 8
    np.random.randint(0, 10, size=10)
    # array([8, 5, 3, 7, 7, 3, 5, 0, 6, 6])
    np.random.randint(0, 10, size=(3, 5))
    # array([[3, 1, 7, 1, 7],
    #        [4, 3, 9, 0, 9],
    #        [5, 4, 5, 7, 9]])
    
  • seed() 随机种子:使随机产生的数固定

    np.random.seed(66)
    
  • random() 产生[0.0, 1.0)浮点型

    np.random.random((3, 5))
    # array([[0.18125584, 0.20119264, 0.99774266, 0.77945293, 0.17220228],
    #        [0.06591739, 0.7000292 , 0.00930508, 0.99817484, 0.63435204],
    #        [0.27645231, 0.40791282, 0.94273693, 0.07972615, 0.36777773]])
    
  • normal() 符合正态分布地产生浮点数

    np.random.normal()     # N(0, 1)
    # -0.3460568787534331
    np.random.normal(100, 50)    # N(100, 2500)
    # 122.21749887519869
    np.random.normal(100, 50, size=3)
    # array([ 30.63267858,  78.09580145, 110.53398345])
    
3.numpy.array的属性
  • ndim:维度,返回int
  • shape:形状,返回tuple
  • size:元素个数,返回int
X
# array([[3, 1, 7, 1, 7],
#        [4, 3, 9, 0, 9],
#        [5, 4, 5, 7, 9]])
X.ndim
# 2
X.shape
# (3, 5)
X.size
# 15
4.reshape()
x
# array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
x.reshape(2, 5)
# array([[0, 1, 2, 3, 4],
#        [5, 6, 7, 8, 9]])
x.reshape(-1, 10)    # -1表示根据列数自动判断行数,必须整除!!
# array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
5.numpy数组/矩阵的合并与分割
  • concatenate() 合并,只支持向量+向量,或矩阵+矩阵

    x
    # array([0, 1, 2])
    y
    # array([2, 1, 0])
    np.concatenate([x, y])
    # array([0, 1, 2, 2, 1, 0])
    
    A
    # array([[0, 1, 2],
    #        [3, 4, 5]])
    np.concatenate([A, A])
    # array([[0, 1, 2],
    #        [3, 4, 5],
    #        [0, 1, 2],
    #        [3, 4, 5]])
    np.concatenate([A, A], axis=1)     # axis默认为0,竖直合并;axis=1水平合并
    # array([[0, 1, 2, 0, 1, 2],
    #        [3, 4, 5, 3, 4, 5]])
    
  • vstack() 竖直合并

  • hstack() 水平合并

    更加灵活,支持“矩阵+向量”的合并

    z
    # array([666, 666, 666])
    np.vstack([A, z])
    # array([[  0,   1,   2],
    #        [  3,   4,   5],
    #        [666, 666, 666]])
    y
    # array([[0],
    #        [1]])
    np.hstack([A, y])
    # array([[0, 1, 2, 0],
    #        [3, 4, 5, 1]])
    
  • split() 分割

    x
    # array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    x1, x2, x3 = np.split(x, [3, 7])
    # x1 array([0, 1, 2])
    # x2 array([3, 4, 5, 6])
    # x3 array([7, 8, 9])
    np.split(x, [2])
    # [array([0, 1]), array([2, 3, 4, 5, 6, 7, 8, 9])]
    
    A
    # array([[ 0,  1,  2,  3],
    #        [ 4,  5,  6,  7],
    #        [ 8,  9, 10, 11],
    #        [12, 13, 14, 15]])
    np.split(A, [2])
    # [array([[0, 1, 2, 3],
    #         [4, 5, 6, 7]]),
    #  array([[ 8,  9, 10, 11],
    #         [12, 13, 14, 15]])]
    np.split(A, [2], axis=1)
    # [array([[ 0,  1],
    #         [ 4,  5],
    #         [ 8,  9],
    #         [12, 13]]),
    #  array([[ 2,  3],
    #         [ 6,  7],
    #         [10, 11],
    #         [14, 15]])]
    
  • vsplit() 竖直分割

  • hsplit() 水平分割

    np.vsplit(A, [2])
    # [array([[0, 1, 2, 3],
    #         [4, 5, 6, 7]]),
    #  array([[ 8,  9, 10, 11],
    #         [12, 13, 14, 15]])]
    np.hsplit(A, [2])
    # [array([[ 0,  1],
    #         [ 4,  5],
    #         [ 8,  9],
    #         [12, 13]]),
    #  array([[ 2,  3],
    #         [ 6,  7],
    #         [10, 11],
    #         [14, 15]])]
    
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值