1

これをどう表現したらいいのかわからない

しかし、私は言うリストを持っています

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.]])

しかし、私の目標は次のようなものを取得することです..

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ライブラリです、ごめんなさい

numpy を np としてインポート

4

2 に答える 2

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.]])
于 2013-10-18T00:11:29.177 に答える