1.ndarray对象的内部机理:由一个纸箱数组的指针,数据类型dtype,一个表示数组形状的元祖,有个跨度元祖(strides)组成
2.np.issubdtyoe(ints.dtype,np.integer)判断数据类型。
np.float64.mro()查看所有父类
3.高级数组操作:花式索引、切片、布尔条件取子集,
数组重塑 reshape/ravel/flatten
多维->一维:扁平化flatten( )返回副本,散开ravel()
连接 concatenate(axis=0)/ hstack(arr1,arr2)/vstack
concatenate:沿一条轴连接多个数组
vstack垂直连接(跨行)/row_stack/np.r_;
hstack水平连接(跨列)/column_stack/np.c_;
dstack(面向深度的方式对数组进行堆叠)
split:沿指定轴在指定的位置拆分数组
元素的重复(tile/repeat)
repeat:针对每个元素,重复次数可以用数组
tile:铺瓷砖,面向数组整体
花式索引(take/put):获取和设置数组子集
4.广播
定义:不同形状的数组之间的算数运算的执行方式
5.ufunc高级应用
reduce(arr)/accumulate(arr) (产生和数组大小相同的中间累计值数组) 和sum,cumsum关系一样
reduce:通过连续执行原始运算的方式对值进行聚合
outer(x,y) 计算两个数组的叉积,对每个元素应用原始运算
reduceat(arr,bins): 局部约简,对数据各切片进行聚合的groupby运算
6.结构化数组(定义dtype类型)
好处:能够提供非常快速高效的磁盘数据读写网络传输等功能
7.排序
ndarray arr.sort排序:就地排序,改变原数组
np.sort(axis=1): 创建副本
arr[:,::-1]反序
aggsort: 将x中的元素从小到大排列,提取其对应的index(索引),然后输出到y。
lexsort可以一次性对多个键数组执行间接排序
np.searchsorted():在有序数组上执行二分查找的数组方法 bins.searchsorted(data),返回数据所在区间
等价于 np.digitize(data,bins)