2013-10-18 36 views
1

我不知道我怎麼能這個詞python的度量值列表,如何?

,但我有一個名單說

l = ['a','b','c','d','e'] 

這是分類和索引,所以如果我做L [0] =>「A」

我使用np.eye(5)獲得對角線1

array([[ 1., 0., 0., 0., 0.], 
[ 0., 1., 0., 0., 0.], 
[ 0., 0., 1., 0., 0.], 
[ 0., 0., 0., 1., 0.], 
[ 0., 0., 0., 0., 1.]]) 

,但我的目標是要達到這樣的..

01這裏
array([[ a., 0., 0., 0., 0.], 
[ 0., b., 0., 0., 0.], 
[ 0., 0., c., 0., 0.], 
[ 0., 0., 0., d., 0.], 
[ 0., 0., 0., 0., e.]]) 

=============更新===================

NP是numpy的圖書館,對不起

np導入numpy

+0

你在使用某種外部庫嗎? 'np'指的是什麼? –

+2

@ChristianTernus:使用['numpy'](http://www.numpy.org)通過以'import numpy as np'開始的習慣用法。 – abarnert

+0

@abarnert啊,謝謝,並感謝您添加標籤。 –

回答

1

根據答案@abarnert任何疑問,可以考慮使用SymPy

>>> from sympy import Symbol 
>>> np.diag([Symbol(x) for x in ['a','b','c','d','e']]) 
array([[a, 0, 0, 0, 0], 
     [0, b, 0, 0, 0], 
     [0, 0, c, 0, 0], 
     [0, 0, 0, d, 0], 
     [0, 0, 0, 0, e]], dtype=object) 
3

所以你想創建一個對角陣列向量,對不對?這是diag

>>> l = ['a','b','c','d','e'] 
>>> np.diag(l) 
array([['a', '', '', '', ''], 
     ['', 'b', '', '', ''], 
     ['', '', 'c', '', ''], 
     ['', '', '', 'd', ''], 
     ['', '', '', '', 'e']], 
     dtype='|S1') 

或者,如果這些都意味着是變量,而不是字符串:

>>> a, b, c, d, e = 1., 2., 3., 4., 5. 
>>> l = [a, b, c, d, e] 
>>> np.diag(l) 
array([[ 1., 0., 0., 0., 0.], 
     [ 0., 2., 0., 0., 0.], 
     [ 0., 0., 3., 0., 0.], 
     [ 0., 0., 0., 4., 0.], 
     [ 0., 0., 0., 0., 5.]])