2016-12-15 9 views
3

パッケージでは、numpyは2つの関数のサイズ変更と変形です。彼らは内部的にどのように働くのですか?彼らはどのような補間を使用していますか?コードを調べましたが、それを得られませんでした。誰でも私を助けることができますか?または、画像のサイズがどのように変更されるか。ピクセルはどうなりますか?numpy.resize関数とnumpy.reshape関数は、どのように内部的にpythonで動作しますか?

+0

:新しい配列は元の配列よりも大きい場合は、新しい配列が繰り返しコピーで満たされています。 https://docs.scipy.org/doc/numpy/reference/generated/numpy.resize.html – user4421975

+0

'np.resize'も' np.reshape'も画像のサイズ変更には適していません。 Numpyは配列であり、画像ではありません。 – Eric

答えて

2

私が知る限り、numpy.reshape()は行列を再構成するだけです(イメージであれ、問題ではありません)。補間は行わず、行列内の項目を操作するだけです。

a = np.arange(12).reshape((2,6)) 


a= [[ 0 1 2 3 4 5] 
    [ 6 7 8 9 10 11]] 


b=a.reshape((4,3)) 

b=[[ 0 1 2] 
    [ 3 4 5] 
    [ 6 7 8] 
    [ 9 10 11]] 
5

どちらも補間しません。また、画像の補間やピクセルについて不思議に思っている場合は、おそらく必要な機能ではありません。イメージの解像度を操作するいくつかのimageパッケージ(例えば、scipy)があります。

すべてnumpy配列にはshape属性があります。 reshapeは、データをまったく変更することなく、それを変更するだけです。新しい形状は元の形状と同じ総数の要素を参照する必要があります。

x = np.arange(12) 
x.reshape(3,4) # 12 elements 
x.reshape(6,2) # still 12 
x.reshape(6,4) # error 

np.resizeはあまり一般的に使用されているが、Pythonで書かれており、研究のために利用可能です。あなたはそのドキュメントを読む必要があり、x.resizeは異なっています。それより大きくなると、実際に値またはパッドがゼロで繰り返されます。 1dに演技リサイズの

例:

In [366]: x=np.arange(12) 
In [367]: np.resize(x,6) 
Out[367]: array([0, 1, 2, 3, 4, 5]) 
In [368]: np.resize(x,24) 
Out[368]: 
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 
     5, 6, 7, 8, 9, 10, 11]) 
In [369]: x.resize(24) 
In [370]: x 
Out[370]: 
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0]) 

scipy.misc.imresizeに関する最近の質問。また、scipy.ndimage.zoom参照:ドキュメントから

Broadcasting error when vectorizing misc.imresize()

+1

_ "reshapeはちょうど[' .shape'] "_"を変更します。より正確には、呼び出されたオブジェクトを実際に変更するのではなく、変更されたビューを作成します – Eric

関連する問題