zoukankan      html  css  js  c++  java
  • python-numpy入门

    import numpy as np
    """
    初始化多维数组,dtype为数据类型,shape为数组形状,ndim表示维度数
    np.empty() 快速创建对象,数值没有实际意义
    """
    z = np.empty([2,3,4])
    #print(z)
    #print(z.dtype,z.shape,z.ndim)
    
    """
    arrage(x) 表示生成0到x-1的一维整数组,
    reshape 表示改变数据的维度,物理存储不会改变,仅改变视图 只要乘积相同,可以随意改变形状。
    size属性表示数组的大小,元素总和
    itemsize 表示数组元素字节数 int为4 float为8
    flatten() 表示将数组打平成一维数组
    """
    x = np.arange(12).reshape(3,4)
    # print(x)
    # print(x.size,x.itemsize)
    # print(x.flatten())
    
    """
    构建ndarray对象
        np.array()
        np.ones() 创建全是1的数组对象
        np.zeros() 创建全是0的数组对象
        
    """
    x1 = np.array([[1,2],[3,4]])
    #print(x1)
    x2 = np.ones([3,4])
    #print(x2)
    x3 = np.zeros([3,4])
    #print(x3)
    
    """
    随机数
        np.random.seed(n) 记录随机数,便于复现
        np.random.randint(low,high,size) 生成low到high之间的随机整数。
        np.linspace(0,20,21) 生成等差数列 0到20 生成21个数
        np.logspace(1,4,5,base=10) base是底数,1到4为指数,生成5个数
    """
    np.random.seed(1)
    r1 = np.random.random([2,3])
    #print(r1)
    np.random.seed(1)
    r2 = np.random.random([3,3])
    #print(r2)
    r3 = np.random.ranf([2,3])
    #print(r3)
    r4 = np.random.randint(1,10,[3,3])
    #print(r4)
    r5 = np.linspace(0,20,10)
    #print(r5)
    r6 = np.logspace(1,4,5,base=10)
    #print(r6)
    
    """
    切片索引
        一维数组:x[0:10:2] 根据索引0到9 每隔2个取数 
                x[::-1] -1表示倒序
        二维数组 x[:,0] :表示这个维度全取
                x[[0,1],0] 可以选择每个维度取哪几行
                s2[np.ix_([0,2],[0,2])] 获取指定行列元素
    """
    s1 = np.arange(12)
    #print(x1[0:10:2])
    #print(s1[::-1])
    s2 = np.arange(12).reshape([3,4])
    # print(s2)
    # print(s2[0,:]) #第一行
    # print((s2[:,0])) #第一列
    # print(s2[[1,2],0]) #取第2,3行的第一列元素
    #print(s2[np.ix_([0,2],[0,2])]) #指定行列的元素
    
    """
    广播
        如果相加元素维度不同,自动广播成相对大的维度
        np.title() 复制数组。
    """
    g1 =  np.arange(12).reshape([3,4])
    #print(g1+10) #每个元素都加10
    #print(g1+np.array([[1,2,3,4]])) #每行都加1234
    g2 = np.arange(24).reshape(6,4)
    gg = np.array([[1,2],[3,4]])
    gg = np.tile(gg,(3,2)) #行上赋值3次,列上赋值2次
    #print(g2+gg)
    
    """
    数组堆叠:
        np.vstack() 垂直方向上堆叠
        np.hstack() 水平方向上堆叠
        np.stack((x1,x2),axis=0) 不同维度上堆叠
    """
    a1 = np.arange(6).reshape(2,3)
    ones1 = np.ones([2,3])
    # print(np.vstack([a1,ones1]))
    # print(np.hstack([a1,ones1]))
    # print(np.stack([a1,ones1],axis=0))
    
    """
    数组精度
        np.around(a) 四舍五入 <=2.5舍 >2.5 入
        np.ceil(a) 向上取整
        np.floor(a) 向下 取整
    """
    a = 2.51
    #print(np.around(a))
    # print(np.ceil(a))
    # print(np.floor(a))
    
    """
    基本算数
        np.power(x,2,out=x)  做完平方后赋值给x
        np.sqrt(x) 开平方
        x.mean(0) 求每行平均
        x.mean(1) 求每列平均
    """
    suan = np.arange(6).reshape([2,3])
    #print(suan)
    # print(np.power(suan,2))
    # print(np.sqrt(suan))
    # print(np.power(suan,2,out=suan))
    #print(suan.mean(0))
    
    """
    矩阵处理
        np.asmatrix(j1) 数组转化成矩阵
        np.vdot(x1,x2) 点积运算
    """
    j1 = np.arange(12).reshape([3,4])
    j2 = np.asmatrix(j1)
    j3 = np.arange(12).reshape([3,4])
    j4 = np.asmatrix(j1)
    print(j1*j3) #数组对应位置相乘
    print(j2*j4.T) #矩阵乘法
    print(np.vdot(j1,j3))
  • 相关阅读:
    一网友推荐的书:框架设计(第2版):CLR Via C#
    线程与WinForm设计,防冻结,卡住窗体
    通用数据库操作辅助类DbHelper
    高级着色器语言(High Level Shader Language,简称HLSL)
    无法将 匿名方法 转换为类型“System.Delegate”,因为它不是委托类型
    根据RGB,计算灰度值
    温故而知新:WinForm/Silverlight多线程编程中如何更新UI控件的值
    [原创视频]PHP在netbeans中的简单使用
    自己封装的ASP.NET的SQLITE数据库的操作类
    《JavaScript征途》读后感
  • 原文地址:https://www.cnblogs.com/2016-zck/p/14650471.html
Copyright © 2011-2022 走看看