2017-04-19 18 views
0

私は行列に変換するリストのリストを持っています。numpy行列内の特定の行と列をスライス

m = [[0, 2, 1, 0, 0], [0, 0, 0, 3, 4], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] 

n = np.matrix(m) 

最初の3つの行と列に基づいて新しい行列を作成するにはどうすればよいですか?

具体的には、これは:

I = [[0, 2, 1], [0, 0, 0], [0, 0, 0]] 

は、私は次の行が

I = m[0:3, 0:3] 

を働くだろうと思ったが、私はあなたが、マトリックスの代わりにリストをスライスしている

TypeError: list indices must be integers or slices, not tuple 

答えて

3

エラーが出ます。 listはタプルを引数として取ることはできません。 m[0:3, 0:3]の代わりにn[0:3,0:3]を使用してください。

+2

なぜこれが正しいのかを説明するのに役立つかもしれません。 –

+0

オタクのように見えます。なぜ 'n'を作って使っていないのですか?件名には行列も含まれています。 – hpaulj

3

user1753919の答えに加えて、次のコードを使用してリストをスライスすることができます

In [10]: [row[0:3] for row in m[0:3]] 
Out[10]: [[0, 2, 1], [0, 0, 0], [0, 0, 0]] 

しかし、私は行列でそれを行うことをお勧めします。もっとシンプルだから。

関連する問題