1 Python自带的list,存储的是对象指针,在进行数值运算时,比较浪费内存和CPU计算时间;
2 Python的array,不支持多维数组;
3 NumPy提供了两个基本的对象:ndarray,ufunc;
4 help(np.array) 或者 np.array? 查看帮助;
5 shape可以查看/修改数组的维度;reshape,创建新维度的数组,存储结构不会发生变化!
6 dtype,元素类型;
7 arange,linespace,logspace 根据简单规则来创建数组;
8 zeros(), ones(), empty() 可以创建指定形状和类型的数组;
9 frombuffer(), fromstring(), fromfile() 可以从字节序列或文件创建数组;
10
fromfunction(),可以自定义一个从下标计算数值的函数,然后通过fromfunction来创建数组;
11 数组元素存取语法:
arr[b:e:s]
b(begin),起始下标,可以省略,表示从0开始;
e(end),结束下标,可以为负数,-n表示从最后一个元素往前数n个;
s(step),步长,有多种巧妙用法,[::-1]表示数组倒叙;
12 通过切片获取的新数组是原始数组的一个视图,数据存储空间不变;
13 高级下标存取方法:整数列表、整数数组、布尔数组;数据存储空间独立,不共享!
14 布尔数组一般不是手工产生,而是使用布尔运算的ufunc函数产生;
-------------------------- 结构数组
1 结构数组类似于c语言的struct,结构中的字段占据连续的内存空间;
2
--------------------------- ufunc 运算
1 ufunc,能对数组中的每个元素进行操作的函数;
2 numpy中的ufunc函数 np.sin,比python库中的 math.sin 快了10倍多,得益于np.sin在c语言级别的循环计算;
3 python 的列表推导运算: x = [math.sin(t) for t in x];
4 numpy item()方法,能返回标准的Python数值类型;
5 运算符 ufunc: 以数组为单位进行运算,+-*/%等;
6 布尔运算:返回一个布尔数组;
7 np.frompyfunc(func, args_num, ret_num) 可以将函数转化为 ufunc,用于数组计算;
8 arr.astype(np.float),可以将ufunc返回的object对象数组,转化为真实的 float 类型;
9 vectorize();
10 广播规则: 当ufunc函数对两个数组进行计算,数组shape属性不同时的处理规则;
11 arr.repeat(), np.ogrid(), np.mgrid()
12 help(np.add): 查看 reduce(), accumulate(), outer()等函数的详细用法;