2017-02-08 9 views
1

私はPythonで新しく、問題は行列内の特定の要素を取得し、これらの要素で新しい行列を作成することです。ここでそれをやろうとしています。マトリックス内の特定の要素にアクセスする

import numpy as np 

a = [[ 1, 2, 3, 4, 5], 
[ 6, 7, 8, 9, 10], 
[ 11, 12, 13, 14, 15], 
[ 16, 17, 18, 19, 20], 
[ 21, 22, 23, 24, 25]] 

b = np.array(a) 

この行列の第1列と第3列だけを取得し、それらを結合して新しい行列を作成したいとします。私は以下のコード追加してみました:

newList = [] 

for i in range(len(b-1)): 
    newList.append(b[i,0])+ newList.append(b[i,2]) 

をしかし、私は代わりに次のエラーを得た:

はTypeError:+のためのサポートされていないオペランドのタイプ(S): 'NoneType' と 'NoneType'

+0

あなたは 'B'の対角要素が必要な場合は、 'b.diagonalを()'を使用する必要があります。 – Evert

+0

も参照してください['numpy.nditer'](https://docs.scipy.org/doc/numpy/reference/generated/numpy.nditer.html) – Evert

+0

こんにちは@Evert、これは単なる例です。私は実際に行列の特定の列を取得することに実際興味があります。たとえば、私は5×5行列を持っていますが、第1列と第3列を使用して新しい行列に結合したいだけです。 –

答えて

0

をすることができます

import numpy as np 

a = np.matrix([[1 , 2 , 3 , 4 , 5 ], 
       [6 , 7 , 8 , 9 , 10], 
       [11, 12, 13, 14, 15], 
       [16, 17, 18, 19, 20], 
       [21, 22, 23, 24, 25]]) 

print(a.diagonal()) 

出力:

あなたはあなたの最初の質問のための diagonal()を使用しますあなたは今の行は、単に呼び出したいので

[[ 4] 
[14] 
[24] 
[34] 
[44]] 

first_column = (a[:,0]) 
third_column = (a[:,2]) 

print(first_column + third_column) 

出力:あなたがそうのような第一および第三の列を組み合わせることができ、コメントでのご質問については

[[ 1 7 13 19 25]] 

transpose()

print((first_column + third_column).transpose()) 

出力:

[[ 4 14 24 34 44]] 
+0

申し訳ありません。これは私の予想される出力[[1,3] [6,8] [11,13] [16,18] [21,23]です。 –

+0

あなたは行く:)私は非常に理解しやすいnumpyのドキュメントを見て検討:) – shash678

関連する問題