矩阵数据处理 Numpy 基础入门

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,104评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,816评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,697评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,836评论 1 298
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,851评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,441评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,992评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,899评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,457评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,529评论 3 341
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,664评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,346评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,025评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,511评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,611评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,081评论 3 377
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,675评论 2 359

推荐阅读更多精彩内容