numpy基础

基本数据结构

numpy介绍

python开源的科学计算工具包
    高级数值编辑工具
        强大的N维数组对象ndarry
        对数组结构数据进行运算(不用遍历循环)
        随机数,线性代数,傅里叶变换等

多维数组ndarray

“秩”
        ar.ndim
    维度
        ar.shape
    元素总数n*m
        ar.size
    元素的数值类型
        ar.dtype
    元素的字节大小
        ar.itemsize
    元素的缓冲区
        ar.data
    数据类型

创建数组:array()函数

np.array(range(10)) 
    创建数组:array()函数,括号内可以是列表、元祖、数组、生成器等

创建数组:arange()

类似range(),在给定间隔内返回均匀间隔的值
        均匀间隔
    np.arange(5,12)
        返回5-11
    np.arange(5.0,12,2)
        返回5.0-12.0,步长为2

创建数组:linspace()

返回在间隔[开始,停止]上计算的num个均匀间隔的样本
        num个均匀间隔
    np.linspace(2.0, 3.0, num=5)

创建数组

np.zeros(5) 
        零矩阵
    np.zeros((2,2), dtype = np.int)
    np.zeros_like(ar3)
    np.ones(9)
        全1矩阵
    np.ones((2,3,4))
    np.ones_like(ar3)
    np.eye(5)
        单位阵

通用函数

数组形状

.T方法:转置
    .reshape()
        直接将已有数组改变形状 
            元素个数必须相同
    .resize()
        返回具有指定形状的新数组,如有必要可重复填充所需数量的元素。
            元素可以不同
    .T/.reshape()/.resize()都是生成新的数组!!!

数组的复制

ar3 = ar1.copy()
        print(ar3 is ar1)
            False
    ar2 = ar1
        print(ar2 is ar1)
            True

数组类型转换

ar2 = ar1.astype(np.int32)
    注意:养成好习惯,数组类型用np.int32,而不是直接int32

数组堆叠

numpy.hstack((a,b)):水平(按列顺序)堆叠数组
        注意:((a,b)),这里形状可以不一样
    numpy.vstack((a,b)):垂直(按列顺序)堆叠数组
        注意:((a,b)),这里形状必须一样
    numpy.stack(arrays, axis=0):沿着新轴连接数组的序列,形状必须一样!

数组拆分

numpy.hsplit(ary, indices_or_sections):将数组水平(逐列)拆分为多个子数组 → 按列拆分
    numpy.vsplit(ary, indices_or_sections)::将数组垂直(行方向)拆分为多个子数组 → 按行拆

数组简单运算

加减乘除幂
        print(ar ** 0.5) 
    最大最小值
    平均值
    标准差
    求方差

索引及切片

一维数组索引及切片
    ar[4]
    ar[3:6]
二维数组索引及切片
    ar[2][1]
三维数组索引及切片
布尔型索引及切片
数组索引及切片的值更改、复制
    ar[5] = 100
    ar[7:9] = 200

随机数

随机数生成

np.random.normal(size=(4,4))
        生成一个标准正太分布的4*4样本值
    numpy.random.rand(d0, d1, ..., dn)
        生成一个[0,1)之间的随机浮点数或N维浮点数组 
            均匀分布
    numpy.random.randn(d0, d1, ..., dn)
        生成一个浮点数或N维浮点数组 
            正态分布
    numpy.random.randint(low, high=None, size=None, dtype='l')
        生成一个整数或N维整数数组
        np.random.randint(2,6,size=5)
            low=2,high=6,size=5:生成5个[2,6)之间随机整数

数据的输入输出

存储数组数据 .npy文件
    np.save('C:/Users/Hjx/Desktop/arraydata.npy', ar)
读取数组数据 .npy文件
    np.load('C:/Users/Hjx/Desktop/arraydata.npy')
存储/读取文本文件
    np.savetxt('array.txt',ar, delimiter=',')
    ar_loadtxt = np.loadtxt('array.txt', delimiter=',')