之前看过Numpy但是学了又不用老是忘记,最近要用的numpy、pandas了又不会用。。。很痛苦,打算最后好好看一遍!
前言
Numpy其实本身用得没有pandas多,但学会它能更好地理解pandas。它最大的特点就是可以高效的操纵多维数组,无需循环而且有很多方便的数学函数。
ndarray:多维数组对象
ndarray是Numpy的核心。可以像操纵标量一样对数组进行批次运算。
每个数组有的属性:
- shape 表示各维度大小的元组
- dtype 数组数据类型
- ndim 维度数(=嵌套层)
创建
#传入序列型数据
a = np.array([1,2,3,4,5])
#传入嵌套序列,转换为多维数组
b = np.array([[1,2,3,4,5],[6,7,8,9,10]])
#创建特殊数组,传入表示形状的元组
c = np.zeros((3,4))#创建全0数组
d = np.ones((3,4))#创建全1数组
e = np.empty((3,4))#创建全空数组
f = np.arange(10,20,2)#创建连续数组,起始值为10,终止值为20,步长为2
运算
大小相等的数组之间的任何算术运算都会将运算应用到元素级。
- 加减乘除都可以像标量一样操作
- 大小相同的两个数组间比较会生成布尔值数组。
- 不同大小的数组之间的运算为广播
索引、切片
#通过[]索引,通过:切片
print(a[2])#输出第三个元素
print(b[1][2])#输出第二行第三个元素
print(b[1,2])#输出第二行第三个元素
#切片也可以进行索引
print(b[1,:])#输出第二行所有元素
print(b[:,1])#输出第二列所有元素
print(b[1,1:4])#输出第二行第二到第四个元素
print(b[1,1:4:2])#输出第二行第二到第四个元素,步长为2
print(b[1,1:-1])#输出第二行第二到倒数第二个元素
print(b[1,1:])#输出第二行第二到最后一个元素
print(b[1,-3:])#输出第二行倒数第三个到最后一个元素
#通过布尔索引
print(a[a>3])#输出大于3的元素
#通过花式索引,传入用于指定顺序的整数列表
print(a[[1,2,4]])#输出第二、三、五个元素
#传入多个整数列表,输出对应位置的元素、
print(a[[1,2,4],[0,2,4]])#输出第二个元素的第一个元素,第三个元素的第三个元素,第五个元素的第五个元素
通用函数
Numpy还提供了许多对数组进行元素级运算的函数。
Numpy感觉重要的基本的就是这些了,后面我在实践中要是发现有什么常用的会回来补充!