python创造矩阵

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
复制代码

 

 

 

 


你可能感兴趣的:(python)