NumPy初心者です。 行列(ndimが2のndarray)のインデクス指定による切り出しについて教えてください。よろしくお願いします。
前提・実現したいこと
下記で ndim が 2 で shape が (4, 5) の ndarray m
を作ります。
python3
1import numpy as np 2 3m = np.array([ 4 [1, 2, 3, 4, 5], 5 [6, 7, 8, 9, 10], 6 [11, 12, 13, 14, 15], 7 [16, 17, 18, 19, 20] 8])
このm
の行のうち、 4行目,1行目,2行目の各行の、5列目と3列目からなる、
array([[20, 18], [ 5, 3], [ 10, 8]])
を、m
に対して何らかのインデクス指定...
を与えて、m[…]
で得ることはできるでしょうか? または何かちょっとしたコードを書かないとできないでしょうか?
試してみたこと
m
の4行目, 1行目, 2行目の全列からなるarrayを得るには
Python3
1m[[3, 0, 1], :]
とすれば
array([[16, 17, 18, 19, 20], [ 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10]])
が返されることは確認しました。ここから、列としては5列目と3列目が欲しいので、全列指定の :
を [4, 2]
に修正して
Python3
1m[[3, 0, 1], [4, 2]]
としてみました。これで結果として得たい
array([[20, 18], [ 5, 3], [ 10, 8]])
が返されるものと思いましたが、以下のIndexErrorが返されました。
発生している問題・エラーメッセージ
IndexError: shape mismatch: indexing arrays could not be broadcast together with shapes (3,) (2,)
補足情報(FW/ツールのバージョンなど)
Python 3.8.2
NumPy 1.20.1
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/05 07:54