numpy初心者です。
・二次元配列X_pre
形状は(n,1)
行(n行):データ数
列(1列):画像ファイル名 例:"xxx.bmp"
から
・二次元配列(n,m)X
行(n行):データ数
列(m列):画像の二次元配列を一次元にflattenしたもの
を作製したく、下記のコードをとりあえず作りました。
完結なコーディングをできるようになりたいので、アドバイスいただきたいと思っております。
どうぞよろしくお願いいたします。
python
1from PIL import Image 2import numpy as np 3import pandas as pd 4 5test=pd.read_csv('XXXXX.csv') #csv fileを読み込む 6X_pre=test['file name'] #(データ数、file name)となる。 7 8width,height=128,96 #resizeの大きさ 9X=np.zeros((X_pre.shape[0],width*height)) #Xの用意。 10 11for i in range(X_pre.shape[0]): #データ数分 12 X[i:]=np.array(Image.open(X_pre[i])).ravel() #ファイルを開き二次元配列に変換したあとにflattenで一次元配列に
・コードは「コードの挿入」で記入してください。
・上記コードを実行してみましたか?
・動作確認のためimport文含めて書かれた方が回答がつくかと思います。
コメントありがとうございます。
修正します。
・'XXXXX.csv'はどんなデータですか? サンプルがあると分かりやすいです
・X_preはPandas.Series型だと思いますが、合っていますか?
コメントありがとうございます。
csvファイルはfile nameの列にファイル名(例:sample1.bmp)が並んでいます。
file name
sample1.bmp
sample2.bmp
sample3.bmp
...
X_preの型は次です。(Pandas.Series型ということ?)
<class 'pandas.core.series.Series'>
ということは質問文の「二次元配列X_pre」という表現は間違っていますかね。
pandasについてもよくわかっておらず、少し勉強してみます。
Seriesオブジェクトと配列の本質的な違いは「インデクス」と本には書いてありました。まだ理解できていませんが、今回X_preがSeries型だと何か問題あるのでしょうか。
掲載のコードは動かしてみましたか?(エラーは出ませんでしたか?) コードを見たところ、「X=np.zeros((n,width*height))」の変数「n」が未定義のように見えます。
すみません。bmpでしたね。見逃してました。。 ←※画像の形式は何ですか?(JPEG? PNG? その他?)
掲載のコードの思想で、想定通り動いています。
質問の思いは、「とりあえず作ったコードではなく、最適なコードがどんなものかを知りたい」というものです。
普通はこうやるよ、というものがあれば知りたいと思っております。
「n」は未定義になっていました。修正しました。
質問からはその意図が伝わりにくいので、質問にそうはっきり書いた方が良いかと思います。
私は勘違いしておりました。 失礼しました。
これからは意図の伝わるように書くように心がけたいと思います。
コメントどうもありがとうございます。
回答1件
あなたの回答
tips
プレビュー