#やりたいこと
txtファイル中の2e+02のような数の'e+0'を削除し再度、戻したいと考えています。
数値をディープラーニングのデータに使いたいと考えています。
2e+02のままでは、生成した際に'e2++02'のような数値が生成されてしまう恐れがあるため、
そのまま'2e+02'を'22'としてデータとして使用します。
例えば、'31'のような数値を生成したとき、'3e+01'のように元の数値に戻したいと考えています。
#試したこと
python
1from PIL import Image 2import numpy as np 3 4image = np.array(Image.open('./Desktop/dog.jpg').convert('L')) 5 6print(image.shape, image.dtype) 7 8print(image) 9 10np.savetxt('./Desktop/image.txt', image, fmt='%.0e') 11 12f = open('./Desktop/image.txt') 13data = f.read() 14data.replace('e+0', '') 15f.close()
2e+02 2e+02 2e+02 2e+02 2e+02 2e+02 2e+02
#環境
python 3.6.7
numpy 1.15.4
ubuntu 18.04
最終的に何がどうなればいいんでしょう?
image.txtの中身ですか?それともimage.txtを読み込んだ後の標準出力ですか?
説明不足でした。image.txtの中身です。
やりたいことをそのままやってしまうと、2e+02(=200)が22になってしまいますが、それでかまいませんか?(「200」と出力したいのでは?)
実は、数値をディープラーニングのデータに使いたいのですが、2e+02のままでは、生成した際に'e2++02'のようなメチャクチャな数値が生成されてしまう恐れがあるため、そのまま'2e+02'を'22'としてデータとして使用し、例えば、'31'のような数値を生成したとき、'3e+01'のように元の数値に戻したいと考えています。
う~ん、ちょっとやりたいことが理解できませんが…では方向性はdice142さんの回答でよいかと思います。
ただ、画素値が120→(指数表現)→1.2e+02→(e+0を除去)→1.22のように小数点を含む文字列?を学習元データとして採用してしまうようですが、それはよいのでしょうかね?
何度もすみません。今回の場合は、2e+02のようなデータがあった場合は、'e+0'を除去したいと考えています。もし小数点を含んでしまった場合は、小数点も除去したいと思います。
fmt='%.0e'にすると小数点は出てこなくなりますね。
やりたいことについては了解しました。やはりdice142さんの回答でよいかと思います。
回答3件
あなたの回答
tips
プレビュー