質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

920閲覧

画像から引き出した情報を元にテキストファイルを作成する方法

退会済みユーザー

退会済みユーザー

総合スコア0

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/05/07 13:22

編集2021/05/08 00:35
# PILで開いたうえでデータをNumpy形式にする # (例えばJPEGは圧縮されていてNumpyな配列になっていないので、 # そこからNumpyのデータ空間(?)に持ってくる必要がある) tefilename = "1.png" teimg = Image.open("drive/My Drive/mnist_dataset/" + tefilename) teimg = teimg.resize((10, 10)) teimg = np.asarray(teimg) def extract(x, y): # カラー画像の時Gだけ抜き取りたい if len(x.shape) == 3: h, w, ch = x.shape # RGBのGだけ抜き取りたい return x[:,:,y] v_max, v_min = 300, 200 def diff(x): imgrows, lenrows, imgcolumns, lencolumns = [], [], [], [] for (img, imgt) in zip(x, x.T): rows = img[(v_min<img)&(v_max>img)] columns = imgt[(v_min<imgt)&(v_max>imgt)] imgrows.append(rows) lenrows.append(len(rows)) imgcolumns.append(columns) lencolumns.append(len(columns)) return lenrows + lencolumns training_data_list = [] for i in range(1): for e in range(1): trad = Image.open("drive/My Drive/mnist_dataset/" + str(10*i+e) + ".png") trad = trad.resize((10, 10)) trad = np.asarray(trad) #g #b #r 抽出後diffしてappend training_data_list.append([i] + diff(extract(trad, 1))) # 略

こんな感じで作成したtraining_data_listの数値データを書き込んだ、まぁできればcsvファイルで保存したいのですが、

具体的には、

7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,185,159,151,60,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,254,254,254,254,241,198,198,198,198,198,198,198,198,170,52,0,0,0,0,0,0,0,0,0,0,0,0,67,114,72,114,163,227,254,225,254,254,254,250,229,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,66,14,67,67,67,59,21,236,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,209,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,233,255,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,238,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,249,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,187,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,205,248,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,251,240,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,221,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,203,254,219,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,224,254,115,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,242,254,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,219,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,207,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,125,171,255,255,150,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,253,253,253,253,218,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,253,253,253,213,142,176,253,253,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,250,253,210,32,12,0,6,206,253,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,251,210,25,0,0,0,122,248,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,18,0,0,0,0,209,253,253,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,247,253,198,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,247,253,231,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,253,253,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,246,253,159,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,234,253,233,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,248,253,189,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,200,253,253,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,253,253,173,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,253,253,43,20,20,20,20,5,0,5,20,20,37,150,150,150,147,10,0,0,0,0,0,0,0,0,0,248,253,253,253,253,253,253,253,168,143,166,253,253,253,253,253,253,253,123,0,0,0,0,0,0,0,0,0,174,253,253,253,253,253,253,253,253,253,253,253,249,247,247,169,117,117,57,0,0,0,0,0,0,0,0,0,0,118,123,123,123,166,253,253,253,155,123,123,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,252,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,244,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,223,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,254,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,254,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,237,205,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,255,165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,254,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,232,215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,254,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,251,254,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,254,205,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,215,254,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,198,176,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
こんな感じで、数字を,区切りで、束にして一行ずつ・・・。
束にするのは、1リストごと、例えば、traininglistが
[[0, 10, 4, 2, 4, 4, 4, 4, 4, 4, 8, 10, 4, 2, 2, 6, 6, 2, 2, 4, 10], [1, 10, 8, 5, 5, 7, 7, 8, 7, 3, 4, 10, 10, 6, 6, 1, 1, 3, 8, 9, 10], [2, 10, 4, 3, 8, 7, 6, 6, 7, 2, 2, 10, 6, 5, 4, 3, 3, 2, 4, 8, 10]]
であれば(実際そうなんですが)、
0,10,4,2,4,4,4,4,4,4,8,10,4,2,2,6,6,2,2,4,10
1,10,8,5,5,7,7,8,7,3,4,10,10,6,6,1,1,3,8,9,10
2・・・10
と、こんな感じですね。

ちなみにgoogle colaboratory使っており、ColabでDriveにuploadする方法が知りたいです。

python

1from google.colab import drive 2drive.mount('/content/drive') 3 4sys.path.append('/content/drive/My Drive') 5 6!pip install -U -q PyDrive 7 8from pydrive.auth import GoogleAuth 9from pydrive.drive import GoogleDrive 10from google.colab import auth 11from oauth2client.client import GoogleCredentials 12 13auth.authenticate_user() 14gauth = GoogleAuth() 15gauth.credentials = GoogleCredentials.get_application_default() 16drive = GoogleDrive(gauth) 17 18a = [[1,2,3],[4,5,6],[7,8,9]] 19f = open("/tmp/hoge.csv", mode="w") 20f.write("\n".join([",".join(map(str,b)) for b in a])) 21 22upload_file_2 = drive.CreateFile() 23upload_file_2.SetContentFile("/tmp/hoge.csv") 24upload_file_2.Upload() 25 26f.close()

こうですかね?もっと軽量化する方法あります?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2021/05/07 13:55

> テキストに書き込んだものを作成したい どんな形式にしたいのでしょうか?
guest

回答2

0

python

1import csv 2 3a = [[1,2,3],[4,5,6]] 4with open('test.csv', 'w') as f: 5 writer = csv.writer(f) 6 writer.writerows(a) 7 8#1,2,3 9#4,5,6

投稿2021/05/07 14:48

meg_

総合スコア10577

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/05/07 23:40

これColabでDriveにuploadする場合どのようにすれば良いのでしょうか?
退会済みユーザー

退会済みユーザー

2021/05/08 00:34

!pip install -U -q PyDrive from pydrive.auth import GoogleAuth from pydrive.drive import GoogleDrive from google.colab import auth from oauth2client.client import GoogleCredentials auth.authenticate_user() gauth = GoogleAuth() gauth.credentials = GoogleCredentials.get_application_default() drive = GoogleDrive(gauth) a = [[1,2,3],[4,5,6],[7,8,9]] f = open("/tmp/hoge.csv", mode="w") f.write("\n".join([",".join(map(str,b)) for b in a])) upload_file_2 = drive.CreateFile() upload_file_2.SetContentFile("/tmp/hoge.csv") upload_file_2.Upload() f.close() こうですか?もっと軽量化できます?無駄があったりとか。
meg_

2021/05/08 04:53

> こうですか?もっと軽量化できます?無駄があったりとか。 確認ですが上記コードで質問者さんのやりたいことは実現できたということでしょうか?その上でのコードレビュー依頼でしょうか?
退会済みユーザー

退会済みユーザー

2021/05/08 22:35

実現できました。その上で、コードの短縮化、 またできれば各コードの意味説明をお願いしたいです。
meg_

2021/05/09 03:43

> またできれば各コードの意味説明をお願いしたいです。 本件の質問タイトル「画像から引き出した情報を元にテキストファイルを作成する方法」と主旨が異なってきていますし、GoogleCredentials等は使用してませんので解説は出来ません。
guest

0

ベストアンサー

>>> a = [[1,2,3],[4,5,6],[7,8,9]] >>> print("\n".join([",".join(map(str,b)) for b in a])) 1,2,3 4,5,6 7,8,9
>>> a = [[1,2,3],[4,5,6],[7,8,9]] >>> f = open("/tmp/hoge.csv", mode="w") >>> f.write("\n".join([",".join(map(str,b)) for b in a])) 17 >>> f.close()

投稿2021/05/07 14:28

編集2021/05/07 15:21
mather

総合スコア6753

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/05/07 14:34 編集

それをcsvとして保存する場合どうするんでしょうか?? ちなみにgoogle colaboratory使ってます。
退会済みユーザー

退会済みユーザー

2021/05/08 02:28 編集

from google.colab import drive drive.mount('/content/drive') import sys import numpy as np sys.path.append('/content/drive/My Drive') import ActivationFunction as AF from PIL import Image !pip install -U -q PyDrive from pydrive.auth import GoogleAuth from pydrive.drive import GoogleDrive from google.colab import auth from oauth2client.client import GoogleCredentials auth.authenticate_user() gauth = GoogleAuth() gauth.credentials = GoogleCredentials.get_application_default() drive = GoogleDrive(gauth) a = [[1,2,3],[4,5,6],[7,8,9]] f = open("drive/My Drive/mnist_dataset/000.csv", mode="w") f.write("\n".join([",".join(map(str,b)) for b in a])) upload_file_2 = drive.CreateFile() upload_file_2.SetContentFile("drive/My Drive/mnist_dataset/000.csv") upload_file_2.Upload() f.close() こうですかね?もっと軽量化できます?
mather

2021/05/08 15:45

「こうですかね?」ではなく、動かしてみて動くならいいんじゃないでしょうか。 パフォーマンス等は問題が発生してから改めて考えるのが良いと思いますし、「コードをきれいにする」「もっといいやり方を探す」といった漠然とした問題の解決はご自身でお願いします。 具体的な問題を明確にしてから、改めて質問しましょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問