欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python关于numpy的使用总结

程序员文章站 2024-01-16 22:59:58
Python关于numpy的使用总结 #24,sorted排序 ll=[8,0,3,6,1,0,5,3,8,9] sorted(ll,revers...

Python关于numpy的使用总结

    #24,sorted排序
    ll=[8,0,3,6,1,0,5,3,8,9]
    sorted(ll,reverse=True) #降序
    sorted(ll,reverse=False)
    --------------------------------------------------------------
    #25,linalg.svd 奇异值分解
    A=np.mat([[1,0,0,0,2],[0,0,3,0,0],[0,0,0,0,0],[0,4,0,0,0]])
    U,S,VT=np.linalg.svd(A)
    U
    S
    VT
    --------------------------------------------------------------
    #26,random.rand
    A=np.mat([[1,0,0,0,2],[0,0,3,0,0],[0,0,0,0,0],[0,4,0,0,0]])
    A[:,1]
    rr=np.random.rand(3,3)  #随机获取3*3个0-1之间的数字
    rr
    rr-0.5
    2*(rr-0.5)
    --------------------------------------------------------------
    #27,arange
    delta=0.25
    x=np.arange(-3.0,3.0,delta) #获取指定起始位置,指定步长的一系列数
    x
    --------------------------------------------------------------
    #28,nonzero()
    x=[[1,0,0,0,2],[0,0,3,0,0]]
    x
    nz=np.nonzero(x)#函数返回矩阵中非0元素的位置
    nz   #nz返回值的意思:第一行是所有非零数所在行值,第二行是所有非零数所在列值
    nz[0]
    --------------------------------------------------------------
    #29,获取指定位置的元素
    A=np.mat([[1,0,0,0,2],[0,0,3,0,0],[0,0,0,0,0],[0,4,0,0,0]])
    sample=A[0,:] #获取第0行的所有元素
    sample
    sample[0]
    A=np.mat([[1,0,0,0,2],[0,0,3,0,0],[0,0,0,0,0],[0,4,0,0,0]])
    ind=[0,1,3]#根据ind序列索引获取矩阵A中的数据
    ing=[0,2,1]
    A[ind,ing]
    --------------------------------------------------------------
    #30,zip
    ll=[1,2,3,4,5,6]
    ll[3:6]+ll[0:3] #可以互换指定区域的位置
    l1=[1,2,3]
    l2=[4,5,6]
    for x,y in zip(l1,l2):  #成对获取x,y的值
        print(x,y)
    --------------------------------------------------------------
    #31,chr函数,获取指定字符
    for i in range(65,70):
        print(np.str(chr(i)))
    --------------------------------------------------------------
    #32,random.shuffle
    ll=[[i] for i in range(9)]
    ll
    np.random.shuffle(ll) #shuffle 函数随机打乱列表中的元素顺序
    ll
    --------------------------------------------------------------
    #33,vdotd点积,返回两个向量的点积
    ll=[1,2,3]
    l2=[4,5,6]
    ll=[l1,l2]
    np.vdot(l1,l2)
    np.dot(l1,l2)
    np.mat(l1)*np.mat(l2).T
    np.mat(ll)
    #vdot和dot的区别
    #对于向量来说,他们两个的点积结果是相同的;
    #对于矩阵来说,dot是矩阵的点积,而vdot是对应位置的元素乘积求和
    --------------------------------------------------------------.
    #34,次方的计算
    3*2**2  #次方的优先级较高
    --------------------------------------------------------------
    #35 ,max函数
    ll=[3,4,6,2,89,9,3,2]
    max(ll)
    l2=[[3,4,5,6,3,89,3],[4,6,3,2,92,2,4]]
    max(l2[0])
    max(l2)
    --------------------------------------------------------------
    #36,mgrid函数,开始值,结束值,
    np.mgrid[-5:5:3j]
    np.mgrid[-5:5:3]
    np.mgrid[-5:5:3j,-5:5:3j]
    np.mgrid[-5:5:3,-5:5:3]
    --------------------------------------------------------------
    #37,ogrid函数
    np.ogrid[-5:5:3j]
    np.ogrid[-5:5:3]
    np.ogrid[-5:5:3j,-5:5:3j]
    np.ogrid[-5:5:3,-5:5:3]
    #ogrid和mgrid不同的是一个数据阵,一个的第三个参数如果是实数说明是步长,如果是虚数,ogrid第一各部分产生一列,第二部分产生一行多列

   --------------------------------------------------------------
   #38,random函数
    print(np.random.seed(1))
    np.random.uniform(-1,1,5)
    np.random.random()
    np.random.random(5)
    np.random.rand(2,3)
    np.random.randint(5,10)
    np.random.randint(5,10,size=(5,5))
   --------------------------------------------------------------
   #39,tofile,fromfile
    a=np.arange(0,12)
    a.shape=3,4
    a
    a.tofile("a.bin")
    b=np.fromfile("a.bin",dtype=np.float)
    b
    a.dtype
    b=np.fromfile("a.bin",dtype=np.int32)
    b
    b.shape=3,4
    b
    #Note:(1) 读入的时候设置正确的dtype和shape 才能保证数据一致,并且tofile函数不管数组
    # 的排列顺序是c语言格式的韩式Fortran语言格式,统一c语言输出。
    #(2)sep关键字参数:此外如果fromfile和tofile指定sep关键字参数的话,数组
    # 将以文本格式输入输出[可以使用notepad++]打开查看,不过数据是一行显示
   --------------------------------------------------------------
   #40,numpy.load 和numpy.save
    a=np.arange(12)
    b=np.add.accumulate(a)
    c=a+b
    f=open("result.npy","wb")
    np.save(f,a)
    np.save(f,b)
    np.save(f,c)
    f.close()
    f=open("result.npy","rb")
    np.load(f)
    np.load(f)
    np.load(f)
    #Note ;(1)文件要保存为.npy文件类型,否则会出错
    #(2)保存为numpy专用二进制格式后,就不能用notepad++打开(乱码)看了,
    # 如果你想将多个数组保存在一个文件中的话,可以使用numpy.saves函数,该
    # 函数的第一个参数是文件名,其后面都是需要保存的数组,也可以使用关键词
    #起一个名字,非关键词参数在传递数组时会自动起名为arr_0、arr_1、arr_2、
    #输出的是以个压缩文件
    a=np.array([[1,2,3],[4,5,6]])
    b=np.arange(0,1.0,0.1)
    c=np.sin(b)
    np.savez("result.npz",a,b,sin_array=c)
    r=np.load("result.npz")
    r["arr_0"]
    r["arr_1"]
    r["sin_array"]
   --------------------------------------------------------------
   #41,permuta tion函数
    np.random.permutation(10)
    np.random.permutation([1,4,9,12])
    arr=np.arange(9).reshape((3,3))
    arr
    np.random.permutation(arr) #如果是多维数组,混淆一维
    --------------------------------------------------------------
    #42,complex构造复数
    np.complex(0,100)
    np.complex(1,-1)
    --------------------------------------------------------------
    #43,求范数
    a=np.array([[complex(1,-1),3],[2,complex(1,1)]])
    a
    np.linalg.norm(a,ord=2)
    np.linalg.norm(a,ord=1)
    np.linalg.norm(a,ord=np.inf)