-2
numpyのフラット関数はどのように機能しますか?また、これらのインデックスはどのように機能しますか?次のコードをすべて説明してください。Python Numpy Flat Function
res = zeros((n, n), v.dtype)
res[:n-k].flat[i::n+1] = v
numpyのフラット関数はどのように機能しますか?また、これらのインデックスはどのように機能しますか?次のコードをすべて説明してください。Python Numpy Flat Function
res = zeros((n, n), v.dtype)
res[:n-k].flat[i::n+1] = v
flat
の簡単な使用は:
In [410]: res = np.zeros((2,3), dtype=int)
In [411]: res
Out[411]:
array([[0, 0, 0],
[0, 0, 0]])
In [413]: res.flat[::2]=1
In [414]: res
Out[414]:
array([[1, 0, 1],
[0, 1, 0]])
In [415]: res.ravel()
Out[415]: array([1, 0, 1, 0, 1, 0])
flat
flatten
とravel
の変形です。ここでは、これを使用して、フラット化された配列の他のすべての要素に1を割り当てます。 ravel
という表現でそのことが分かります。同じ配列の2次元ビューではあまり明白ではありません。
res[:n-k].flat[i::n+1] = v
では、最初の[:n-k]
はres
のいくつかの行を選択します。私の例では、v
からn+1
までの値をフラット化配列に割り当てて、flat[]
が動作します。
再び小さな例でテスト:
In [417]: res = np.zeros((5,5), dtype=int)
In [418]: res[:3]
Out[418]:
array([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]])
In [419]: res[:3].flat[2::6]
Out[419]: array([0, 0, 0])
In [420]: res[:3].flat[2::6]=[1,2,3]
In [421]: res
Out[421]:
array([[0, 0, 1, 0, 0],
[0, 0, 0, 2, 0],
[0, 0, 0, 0, 3],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]])
[i::n+1]
インデクシングの使用は、対角線上の値を設定してしまいます。
または
In [422]: res = np.zeros((5,5), dtype=int)
In [424]: res.flat[0::6]
Out[424]: array([0, 0, 0, 0, 0])
In [425]: res.flat[0::6]=np.arange(5)
In [426]: res
Out[426]:
array([[0, 0, 0, 0, 0],
[0, 1, 0, 0, 0],
[0, 0, 2, 0, 0],
[0, 0, 0, 3, 0],
[0, 0, 0, 0, 4]])
ウェルカムにStackOverflowに!あなたは["どうすれば良い質問をしますか?"](http://stackoverflow.com/help/how-to-ask)について読んでみるとよいでしょうか。 –