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
複製代碼

 

 

 

 


發佈了12 篇原創文章 · 獲贊 13 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章