2016-08-21 143 views
0

我給這在某種程度上代表了矩陣列表,但它在列表格式,像如何從列表創建矩陣?

["OOX","XOX","XOX"] 

有什麼辦法,我可以把它轉換成一個矩陣? 我已經經歷了numpy,但無法弄清楚!

+1

你想要一個矩陣或列表的列表? –

+1

我猜你想要這個:'np.matrix([[OOX],「XOX」,「XOX」]])'s的列表(s),如果沒有,你能提供你的預期輸出嗎? – Akavall

+1

從什麼意義上說,這不是一個矩陣?如果你將它命名爲'matrix',那麼你已經可以訪問它的元素,比如'matrix [i] [j]'。有什麼問題? –

回答

1

numpy對此是矯枉過正。對於像Tic-tac-toe這樣的東西,清單列表就足夠了。

如果'OOX'是一個字符串,那麼list('OOX')是列表['O','O','O']

你可以用一個列表理解結合list

喜歡的東西:

>>> rows = ["OOX","XOX","XOX"] 
>>> board = [list(row) for row in rows] 
>>> board 
[['O', 'O', 'X'], ['X', 'O', 'X'], ['X', 'O', 'X']] 

使用,如:

>>> board[0][2] 
'X' (3rd entry in first row). 

注意,列表是可變的,因此,這些元素可以改變以及閱讀:

board[0][2] = 'O' wi將該位置的'X'更改爲'O'

+3

您的使用示例是毫無意義的。如果你只是在閱讀,根本不需要做任何轉換。可以改爲使用'rows [0] [2]'。我會添加一個例子,您**寫入**。 –

+0

@StefanPochmann好點。我主要是在說明索引編制的工作方式,關於它很明顯,你可以寫和讀。儘管如此,它還不能表明元素可以改變,所以我會這樣做。 –

+0

是的,這只是一個奇怪的問題。如果他要求寫作能力,我相信你會馬上證明這一點。但他沒有,我甚至不確定他是這麼想的。實際上可能只是要求一個二維**顯示** ... –

0

像這樣簡單:

In [4]: a = ["OOX","XOX","XOX"] 

In [5]: m = np.array([*map(list, a)]) 

In [6]: m 
Out[6]: 
array([['O', 'O', 'X'], 
     ['X', 'O', 'X'], 
     ['X', 'O', 'X']], 
     dtype='<U1')