与list等其他结构不同,是连续存储的
1.数组
- 数组的产生:a = np.array(list,dtype = 'float64')或者a = np.asarray(list,dtype='float64')从列表产生;也可以b = np.asarray(a,dtype='float64'),当参数本身就是ndarray类型时,array会新建一个ndarray对象,作为参数的副本,但是asarray不会新建,而是与参数共享同一个内存,只是一个引用,保证效率
- 数组与字符串之间的转换,a.tostring(),a = np.fromstring(s,dtype = np.unit8)
- 查看类型:type(a)
- 查看数据类型:a.dtype
- 查看每个元素字节:a.itemsize
- 查看形状:a.shape()或者shape(a)
- 查看数目:a.size或者size(a)
- 查看所占空间:a.nbytes
- 查看数组纬数:a.ndim
- 转换类型:a.astype('int32'),返回新的值
- 基础的索引与切片:形如a[1,3],然而嵌套列表是a[1][3];a[0,3:5]的切片是引用,改变切片的值会影响原数组的值,不想改变用b = a[0,3:5].copy()即可,然而列表是复制
- 花式索引略
- where返回元组,可用于多维度
- np.arange(s,e,step)产生等差数组
2.数组方法
- sum(a,axis = 0/1/-1),0时列数不变
- a.prod(axis = 0)或prod(a,axis = 0)计算每一列的乘积,得到1*n
- a.min(axis = 0),a.max(axis = 0)返回每一列的最值,得到1*n
- a.argmin(axis = 0),a.argmax(axis = 0)返回最值的索引
- a.mean(axis = -1)或者mean(a)或者average(a),average还可以加权平均average(a,axis = 0,weights = [1,2])
- a.std(axis = 0)或者std(a,axis = 0);a.var(axis = 0)或者var(a,axis = 0)
- a.clip(3,5)限制在某个范围
- a.ptp()计算大小值的差
- a.round(decimals = 1)
- a.diagnal()查看对角线元素
3. 排序
- sort(a)从小到大排序,原地排序,可以指定axis
- c = argsort(a)得到索引位置,原地排序,可以用在b(c)取别的有用的对应值
4. 数组形状
- a.shape(2,3)原地修改
- a.reshape(2,3)返回新数组
- np.newaxis增加纬度
- np.squeeze(a,axis = 0)去除多余的轴
- np.transpose()转置,或者a.T
- np.concatenate((x,y),axis = 1)沿着列拼接,行数不变
- b = a.flatten()或者a.flat或者a.ravel()返回一维数组