NumPy 学习笔记

from 《利用Python进行数据分析》


numpy导包语句:

1
import numpy as np

ndarray

两个重要的attribute:
dtype:表示数组容纳的数据类型;
shape:元组,指示着数组的形状

ndarray的生成

生成方法:

总的来说可以按照接受参数分为四类:
构造型:
np.array():接受参数为元组、列表或者其他参数;
“按需供给型”:
接受参数为shapedtype,具体代表有:
np.ones()np.zeros();
“like”型:
接受一个ndarray实例并按要求生成一个形似其的ndarray实例,具体代表有:
np.oneslike()np.zeros_like
特征矩阵型:
生成指定大小(N x N)的特征矩阵。
np.eye()np.inentity().

ndarray数据类型

重要方法:np.astype()接受参数为一个dtype,功能为强制转换数组数据类型。

NumPy数组算数

NumPy所支持的数组算数是定义在两个尺寸相同d的ndarray之间的。

1
2
3
4
5
6
# 设arr, arr1为两个尺寸相同的ndarray的引用,NumPy支持以下写法:
a = arr*arr
b = arr - arr
c = 1 / arr
d = arr ** 0.5 // 次幂
e = arr > arr1 // e为一个布尔值数组

基础索引与切片

一个值得注意的事实是,ndarray的切片是这个数组的一个视图,也就是说,当对切片进行操作时,这个操作会映射到原数组上;

如果希望得到切片的一个副本,那么需要调用:np.copy()方法,这个方法返回一个ndarray的副本。

具体索引/切片形式和python内建数据结构相似,形如x:y这样的形式包含在中括号中。

对于多维数组(以三维数组arr3d为例),其索引形式为:arr3d[甲,乙,丙],从左至右依次选定中括号层次由外向内的系列对象。

布尔索引

fact1 :

1
2
3
4
names = np.array(['a', 'b', 'b'])
# 若运行:
boolean = (names == 'b')
# 会返回: array([False, True, True], dtype=bool)

fact2 :
索引数组可以传入布尔数组作为某个轴的索引参数。

魔术索引(magic index)

数组转置和转轴

通用函数

这个查书就好

使用数组进行面向数组编程

1
2
3
points = np.arange(-5, 5, 0.01)
xs, ys = np.meshgrid(points, points) # meshgrid方法需要后期留意一下
z = np.sqrt(xs**2 + ys**2)

np.where(cond, xarr, yarr)方法可以被看做python三元表达式的向量化版本,其功能为:若cond中数组相应位置元素满足cond表达式,则用xarr对应元素替换,否则用yarr对应元素替换。

后续不再摘录书中方法,有必要去查numpy官方API文档即可。