亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Python中定義二維數組

如何在Python中定義二維數組

呼如林 2019-06-10 20:45:31
如何在Python中定義二維數組我想定義一個沒有初始化長度的二維數組,如下所示:Matrix = [][]但它不起作用.。我已經嘗試了下面的代碼,但它也是錯誤的:Matrix = [5][5]錯誤:Traceback ...IndexError: list index out of range我犯了什么錯?
查看完整描述

3 回答

?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

嚴格地說,您正在嘗試索引未初始化的數組。在添加項目之前,必須先用列表初始化外部列表;Python將此稱為“列表理解”。


# Creates a list containing 5 lists, each of 8 items, all set to 0

w, h = 8, 5;

Matrix = [[0 for x in range(w)] for y in range(h)] 

現在可以將項添加到列表中:

Matrix[0][0] = 1

Matrix[6][0] = 3 # error! range... 

Matrix[0][6] = 3 # valid


print Matrix[0][0] # prints 1

x, y = 0, 6 

print Matrix[x][y] # prints 3; be careful with indexing! 

雖然你可以按你的意愿命名它們,但我這樣看待它是為了避免索引時可能出現的一些混亂,如果你對內部和外部列表都使用“x”,并且想要一個非平方矩陣的話。


查看完整回答
反對 回復 2019-06-10
?
飲歌長嘯

TA貢獻1951條經驗 獲得超3個贊

如果你真的想要一個矩陣,你最好用numpy..矩陣運算numpy通常使用二維數組類型。創建新數組的方法有很多;最有用的方法之一是zeros函數,它接受一個形狀參數并返回給定形狀的數組,其值初始化為零:

>>> import numpy>>> numpy.zeros((5, 5))array([[ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.]])

numpy提供一個matrix也要打字。它不太常用,而且有些人不建議用它。但它對人們來說很有用numpy在其他情況下。我想我應該把它包括進去,因為我們說的是矩陣!

>>> numpy.matrix([[1, 2], [3, 4]])matrix([[1, 2],
        [3, 4]])

下面是創建二維數組和矩陣的一些其他方法(為壓縮而刪除輸出):

numpy.matrix('1 2; 3 4')                 # use Matlab-style syntax

numpy.arange(25).reshape((5, 5))         # create a 1-d range and reshape

numpy.array(range(25)).reshape((5, 5))   # pass a Python range and reshape

numpy.array([5] * 25).reshape((5, 5))    # pass a Python list and reshape

numpy.empty((5, 5))                      # allocate, but don't initialize

numpy.ones((5, 5))                       # initialize with ones

numpy.ndarray((5, 5))                    # use the low-level constructor


查看完整回答
反對 回復 2019-06-10
?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

下面是初始化列表的一個較短的符號:


matrix = [[0]*5 for i in range(5)]

不幸的是,把這個縮短為5*[5*[0]]實際上不起作用,因為您最終得到了相同列表的5份副本,因此當您修改其中一份時,它們都會更改,例如:


>>> matrix = 5*[5*[0]]

>>> matrix

[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

>>> matrix[4][4] = 2

>>> matrix

[[0, 0, 0, 0, 2], [0, 0, 0, 0, 2], [0, 0, 0, 0, 2], [0, 0, 0, 0, 2], [0, 0, 0, 0, 2]]


查看完整回答
反對 回復 2019-06-10
  • 3 回答
  • 0 關注
  • 6440 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號