数据科学的比赛,不了解numpy和pandas的话,简直是寸步难行。之前虽然有用过numpy和pandas的一些方法,但都没有系统学习过,所以还是决定要系统的过一遍。所以简单看了一下莫烦的教程。numpy库主要可以分成几个部分:属性、创建、运算、索引以及操作(合并与分割)。
1.属性
我们都知道,在数据科学中,我们主要的对象就是数据,那为了方便数据的管理与运输,我们又通常将他们转换为矩阵的形式,numpy操作的对象大部分就是矩阵。那作为矩阵一般都有什么属性,就很容易理解了。
1.ndim:维度,维度就是描述数据特征的特征数量,例如一系列的目标在二维空间中,怎么描述这些目标呢?当然需要行和列来描述了。这里维度就是2(行和列)。
2.shape:行数和列数
3.size:元素的个数
4.dtype:元素的类型
1 | array = np.array([[1,2,3],[2,3,4]]) #列表转化为矩阵 |
2.创建
前面说到numpy主要操作的对象是矩阵,那我们在敲代码的时候肯定不能直接写:
1 | a = np.矩阵((1,1)) |
哈哈哈,这里有个关键字嘛,就是array。在
1 | a = np.array([2,23,4]) # list 1d |
当然这是最普通的,还有一些简便的生成特殊矩阵的方法。
1 | # 全零数组 |
3.运算
运算有分成对矩阵单个元素进行运算的,也有对某一个维度进行运算的,也有对整个矩阵进行运算的。
1 | import numpy as np |
1.单个元素:
1 | c=a-b # array([10, 19, 28, 37]) |
2.某一个维度:(axis指定维度)
1 | print("a =",a) |
3.整个矩阵
1 | # 矩阵乘积(一般的运算方法都有两种形式,不一一列举了) |
4.索引
和python的list索引比较像,就不展开了,说一下迭代输出吧。
1 | import numpy as np |
5.操作
合并
1.np.vstack()
1 | import numpy as np |
2.np.hstack()
1 | D = np.hstack((A,B)) # horizontal stack |
3.np.newaxis(),添加一个新的维度,可以用于维度对齐或者是将序列转换成矩阵,这里也可以用reshape来实现序列转换到矩阵。
1 | print(A[np.newaxis,:]) |
4.np.concatenate(),是前面两个函数的复合版
1 | C = np.concatenate((A,B,B,A),axis=0) |
分割
1.等量分割
1 | A = np.arange(12).reshape((3, 4)) |
2.不等量分割
1 | print(np.array_split(A, 3, axis=1)) |
3.其他分割方法
1 | print(np.vsplit(A, 3)) #等于 print(np.split(A, 3, axis=0)) |