机器学习&全栈我爱编程

矩阵数据处理 Numpy 基础入门

2018-05-10  本文已影响28人  采香行处蹙连钱
pandas库学习
  1. 参考文献:http://codingpy.com/article/a-quick-intro-to-pandas/

    import pandas as pd
    
    def load_data(y_name='Species'):
        CSV_COLUMN = ['SepalLength', 'SepalWidth',
                        'PetalLength', 'PetalWidth', 'Species']
        path = '/Users/gl/Desktop/iris_training.csv'
        train = pd.read_csv(path, names=CSV_COLUMN, header=0)
        #pop删除某列,返回删除的那一列的数据,此处为简单赋值
        train_x, train_y = train, train.pop(y_name)
        return (train_x, train_y)
    
    print(load_data())
    
    接口:
    df.tail() 
    df.head()
    df['rain_octsep']或者df.rain_octsep
    布尔过滤:df.rain_octsep < 1000
    索引:df.iloc[30]
    对数据集应用函数:
    def base_year(year):
        base_year = year[:4]
        base_year= pd.to_datetime(base_year).year
        return base_year
    
    df['year'] = df.water_year.apply(base_year)
    df.head(5)
    数据集结构操作
    合并数据集:
    使用Pandas快速作图:
    
  2. ove

Numpy快速入门
  1. 参考文献:http://codingpy.com/article/an-introduction-to-numpy/

  2. Python 学习数据科学或者机器学习,就必须学习 NumPy

    1. 创建一维数组、矩阵
    a = np.array([2, 3, 4, 5, 6])
    b = np.array([4, 5, 5, 5, 6])
    c = np.arange(6)
    d = np.linspace(0, 2*np.pi, 5)
    print(a, b, c, d)
    
    2.  切片基本知识:切片适用于list、tuple和str
    l = [23, 42, 96, 7, 84, 99, 54, 1]
    t = (2, 85, 64, 129, 92, 84, 1, 33)
    s = 'Hello internet!'
    # Basic slicing.
    print(l[4:7]) # >>>[84, 99, 54]
    print(t[4:7]) # >>>(92, 84, 1)
    print(s[4:7]) # >>> 'o i'
    # First five.
    print(l[:5]) # >>>[23, 42, 96, 7, 84]
    print(t[:5]) # >>>(2, 85, 64, 129, 92)
    print(s[:5]) # >>>'>Hello'
    # Last five.
    print(l[-5:]) # >>> [7, 84, 99, 54, 1]
    print(t[-5:]) # >>> (129, 92, 84, 1, 33)
    print(s[-5:]) # >>> 'rnet!'
    # Every other.
    print(l[::2]) # >>>[23, 96, 84, 54]
    print(t[::2]) # >>>(2, 64, 92, 1)
    print(s[::2]) # >>>Hloitre!
    # Reverse order.
    print(l[::-1]) # >>>[1, 54, 99, 84, 7, 96, 42, 23]
    print(t[::-1]) # >>>(33, 1, 84, 92, 129, 64, 85, 2)
    print(s[::-1]) # >>>!tenretni olleH
    print(l[-5:-3:-2]) >>> [84]
    # copy and all
    print(l[:])
    
    3. 多维数组&切片
    e = np.array([[11, 12, 13, 14, 15],
                  [16, 17, 18, 19, 20],
                  [21, 22, 23, 24, 25],
                  [26, 27, 28 ,29, 30],
                  [31, 32, 33, 34, 35]])
    print(e[3, 4]) >>> 30
    print(a[0, 1:4]) # >>>[12 13 14]
    print(a[1:4, 0]) # >>>[16 21 26]
    print(a[::2,::2]) # >>>[[11 13 15]
                      #     [21 23 25]
                      #     [31 33 35]]
    print(a[:, 1]) # >>>[12 17 22 27 32]
    4. 向量和矩阵
    向量是一个有方向和大小的量,通常用来表示速度、加速度和动量等。向量能以多种方式书写,但是我们最有用的方式是把它们写在有 n 个元素的元组里边,比如(1, 4, 6, 9)。这就是它们在 NumPy 中的表示方式。
    
    5. 数组属性
    依旧使用上例中的数组矩阵
    print(type(a)) # >>><class 'numpy.ndarray'>
    print(a.dtype) # >>>int64
    print(a.size) # >>>25
    print(a.shape) # >>>(5, 5) 数组的形状(shape)是指它有多少行和列 
    print(a.itemsize) # >>>8 'itemsize' 属性是每一个条目所占的字节
    print(a.ndim) # >>>2 'ndim' 属性是指数组有多少维
    print(a.nbytes) # >>>200
    
    6. 使用数组基本操作
    a = np.arange(25)
    a = a.reshape((5, 5))
    
    b = np.array([10, 62, 1, 14, 2, 56, 79, 2, 1, 45,
                  4, 92, 5, 55, 63, 43, 35, 6, 53, 24,
                  56, 3, 56, 44, 78])
    b = b.reshape((5,5))
    
    print(a + b)
    print(a - b)
    print(a * b) // 这里是矩阵的某个位置上的数字相乘
    print(a / b)
    print(a ** 2) 
    print(a < b) print(a > b)
    
    print(a.dot(b)) // 这里是矩阵的点积
    7. 数组特定操作符
    print(a.sum()) # >>>45
    print(a.min()) # >>>0
    print(a.max()) # >>>9
    print(a.cumsum()) # >>>[ 0  1  3  6 10 15 21 28 36 45]
    
    8.高级索引
    花俏的索引
    “花俏的索引”是获取数组中我们想要的特定元素的有效方法。
    a = np.arange(0, 100, 10)
    indices = [1, 5, -1]
    b = a[indices]
    print(a) # >>>[ 0 10 20 30 40 50 60 70 80 90]
    print(b) # >>>[10 50 90]
    返回了 indices索引数组要求的数据
    
    布尔屏蔽
    缺省索引
    缺省索引是从多维数组的第一维获取索引和切片便捷方法。例如,你有一个数组 a = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]],那么 a[3] 将会返回数组第一维中索引值为 3 的元素,这里的结果是 4。
    a = np.arange(0, 100, 10)
    b = a[:5]
    c = a[a >= 50]
    print(b) # >>>[ 0 10 20 30 40]
    print(c) # >>>[50 60 70 80 90]
    
    Where函数
    # Where
    a = np.arange(0, 100, 10)
    b = np.where(a < 50) 
    c = np.where(a >= 50)[0]
    print(b) # >>>(array([0, 1, 2, 3, 4]),)
    print(c) # >>>[5 6 7 8 9]
    
    
  3. over

上一篇 下一篇

猜你喜欢

热点阅读