2016-08-21 90 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')