python创造矩阵

发布时间:2019-09-23 17:04:21编辑:auto阅读(2014)

    python的numpy创造矩阵


    from numpy import mat

    import numpy as np


    data1=mat(zeros((3,3)));               #创建一个3*3的零矩阵,矩阵这里zeros函数的参数是一个tuple类型(3,3)

    data2=mat(ones((2,4)));                #创建一个2*4的1矩阵,默认是浮点型的数据, 

    data3=mat(random.rand(2,2));          #这里的random模块使用的是numpy中的random模块,random.rand(2,2)                                                               创建的是一个二维数组,

    data4=mat(random.randint(10,size=(3,3)));           #生成一个3*3的0-10之间的随机整数矩阵,如果需要指定下界                                                                                 则可以多加一个参数

    data5=mat(random.randint(2,8,size=(2,5));             #产生一个2-8之间的随机整数矩阵

    data6=mat(eye(2,2,dtype=int));           #产生一个2*2的对角矩阵


    a1=[1,2,3];

    a2=mat(diag(a1));           #生成一个对角线为1、2、3的对角矩阵


    手动创造矩阵

    count = 1
    a = []
    for i in range(0, 3):
        tmp = []
        for j in range(0, 3):
            tmp.append(count)
            count += 1
        a.append(tmp)
    print a
    复制代码

    结果:[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

    但是注意一点:初始化(赋值全部为0时),下面是错误的!!

    复制代码
    tmp = []
    for j in range(0, 3):
        tmp.append(0)
    a = []
    for i in range(0, 3):
        a.append(tmp)
    print a
    复制代码

    结果:[[0, 0, 0], [0, 0, 0], [0, 0, 0]]

    原因:这样的列表tmp为同一个,改变任意行,其他行都会给随着改变,千万注意!!,下面正确:

    复制代码
    a = []
    for i in range(0, 3):
        tmp = []
        for j in range(0, 3):
            tmp.append(0)
        a.append(tmp)
    print a
    复制代码

     

     

     

     


关键字