0
ブーリアンマスクを使用して2D numpy配列をマスキング/スライスする方法について質問があります。ここでは、npの2次元配列xがあります。Python 2D配列、ブールマスクから要素をスライス/除去し、結果を2D配列として保持
x=np.tile(np.arange(10).reshape(10,1),(1,10))
[[0 0 0 0 0 0 0 0 0 0]
[1 1 1 1 1 1 1 1 1 1]
[2 2 2 2 2 2 2 2 2 2]
[3 3 3 3 3 3 3 3 3 3]
[4 4 4 4 4 4 4 4 4 4]
[5 5 5 5 5 5 5 5 5 5]
[6 6 6 6 6 6 6 6 6 6]
[7 7 7 7 7 7 7 7 7 7]
[8 8 8 8 8 8 8 8 8 8]
[9 9 9 9 9 9 9 9 9 9]]
xは10×10の配列で、各列は同じです。これを生成する良い方法があれば、それを指摘できますか?ありがとう。次にブール配列、
y=(x!=np.arange(10))
[[False True True True True True True True True True]
[ True False True True True True True True True True]
[ True True False True True True True True True True]
[ True True True False True True True True True True]
[ True True True True False True True True True True]
[ True True True True True False True True True True]
[ True True True True True True False True True True]
[ True True True True True True True False True True]
[ True True True True True True True True False True]
[ True True True True True True True True True False]]
さて、私のような結果の配列を取得したい、Xの対応する位置yの中
[[1 0 0 0 0 0 0 0 0 0]
[2 2 1 1 1 1 1 1 1 1]
[3 3 3 2 2 2 2 2 2 2]
[4 4 4 4 3 3 3 3 3 3]
[5 5 5 5 5 4 4 4 4 4]
[6 6 6 6 6 6 5 5 5 5]
[7 7 7 7 7 7 7 6 6 6]
[8 8 8 8 8 8 8 8 7 7]
[9 9 9 9 9 9 9 9 9 8]]
要素値はFalseが削除されました、そして新しいがあります2次元配列が返されます。だから私はこの状況のためにこれを得ることができますか?
ご協力いただきありがとうございます。
ご返信ありがとうございます。私はx [y]を使って、それが1次元配列を形成していることも発見しました。しかし、なぜそれが望ましい結果を得るために反転されるべきですか? Btw、ここで-1は形を変えています。私は通常、形を変えるために変形(9,10)のように使います。 –
[reshapeを使用している場合](https://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html)1次元は「-1」になります。これは、配列のサイズと他の次元の長さに基づいて、実際の次元の長さを推測するように再構成に指示します。基本的には、「正しいことをやってください」という意味です。今、要素の「再形成」[順序を変更しない](http://stackoverflow.com/a/35226493/190597)。 'x [y]'は '0、0、0、0、0、0、0、0、0、1'で始まります。あなたが '1、0、0、0、0、0、0、0、0、0'を望むならば、配列は反転されなければなりません。 – unutbu
お返事ありがとうございます。あなたが提供する方法は、このような状況下では機能します。私は質問がある、配列y(ブール配列)の各列に複数のFalseがある場合、あなたのメソッドが毎回動作しないことがわかった。このような状況について何か提案がありますか?ありがとう。 –