元のイメージ(形とdtypeが((1024, 1024, 3), dtype('uint8'))
の場合)を最初に1D配列に変換して、その1D配列をトレーニングセットに1つの観測として入力できるようにします。pythonでイメージ行列を変形する
今、私はその1D配列を元の形式に変換したいと思います。
オリジナルイメージを1Dアレイに変換するために、numpyで利用可能なflatten()
関数を使用しました。以下のコードである:
In[80]: t = misc.imread('b.png') #to read the image
In[81]: t.shape, t.dtype
Out[81]: ((1024, 1024, 3), dtype('uint8'))
#To convert the above image into 1D array
In[82]: t.flatten()
Out[82]: array([ 5, 40, 121, ..., 130, 110, 89], dtype=uint8)
今は元の行列(形状すなわち(1024,1024,3)
)に(t.flattern()
起因)上記マトリクスを変換します。
私は何をすべきか教えてください。
アップデート: 私はt.flatten
の形状を確認し、それが
In[86]: p=t.flatten()
In[87]: p.shape
Out[86]:(6291456,)
しかし6291456 =(* 1024 1024 * 3 * )と出てきます。今、私はこの余分な言葉(すなわち)がどこから出てくるのか分かりません。
私もreshapeコマンドを使用しましたが、コマンドを実行するとエラーが出ます。使用reshape
l=p.reshape(1024,1024,3)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-89-b1ab41666df7> in <module>()
----> 1 l=p.reshape(1024,1024,3)
ValueError: total size of new array must be unchanged
ただ、 'reshape'? – Divakar
@Divaker私はそれを使用しましたが、あいまいなエラーを表示します – Lok
与えられた初期形状の配列に対して '(6291456、)'になる 'p.shape'を再現することはできません。 – akilat90