問題#1:取得範囲内のインデックス
あなたはそれらのインデックスを取得するためにnp.meshgrid
を使用することができます -
In [145]: x1range,x2range = 2,5
...: y1range,y2range = 1,4
...:
In [146]: np.meshgrid(np.arange(x1range,x2range),np.arange(y1range,y2range))
Out[146]:
[array([[2, 3, 4],
[2, 3, 4],
[2, 3, 4]]), array([[1, 1, 1],
[2, 2, 2],
[3, 3, 3]])]
問題# 2:oを抽出するRこれらの範囲
内の入力配列要素を設定するあなたが入力配列arr
にnp.ix_
に直接インデックスを使用することができます - このインデックス付き
In [148]: arr
Out[148]:
array([[97, 69, 0, 60, 28, 97],
[98, 85, 24, 75, 97, 23],
[70, 25, 77, 86, 93, 66],
[ 0, 85, 51, 17, 40, 92],
[66, 28, 28, 22, 79, 52]])
In [149]: arr[np.ix_(np.arange(x1range,x2range),np.arange(y1range,y2range))]
Out[149]:
array([[25, 77, 86],
[85, 51, 17],
[28, 28, 22]])
、一つは直接これらすべての要素を設定することができます。
問題#3:あなたがそうのようboolean-indexing
を伴って含むNumPy broadcasting
を使用することができ、抽出またはNOTこれらの範囲
/設定0s
にnot
満足の要素を抽出するために、内の入力配列の要素を設定し、同じよう残りの部分を維持します -
In [150]: Imask = np.in1d(np.arange(arr.shape[0]),np.arange(x1range,x2range))
...: Jmask = np.in1d(np.arange(arr.shape[1]),np.arange(y1range,y2range))
...: arr[~(Imask[:,None] & Jmask)] = 0
...:
In [151]: arr
Out[151]:
array([[ 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0],
[ 0, 25, 77, 86, 0, 0],
[ 0, 85, 51, 17, 0, 0],
[ 0, 28, 28, 22, 0, 0]])
こんにちは、私はこれを試してみます。もう1つの質問ですが、このクエリを逆にしたいのですが?それは可能ですか?のように、この条件の 'ない'? – n00b
@ n00bこの条件の「否」とは何を意味するのかというサンプルを使って質問を編集できますか? – Divakar
こんにちは、私は編集し、not条件で展開しました。 – n00b