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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

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

Q&A

0回答

1169閲覧

csvからnpz変換したい

tazaryu

総合スコア6

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

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

0グッド

0クリップ

投稿2021/01/08 06:16

編集2022/01/12 10:55

csvからnpzに変換するプログラムを作成したのですが,エラーが旨くいきませんでした.
どなたか,ご教示の程,よろしくお願い致します. 変換したいname.csvからname.npzです.xは[1,64],yは[1,6]配列になっています.
yは1~5のラベルになっており,npz変換時に[0,1,0,0,0,0]のようなラベルの数が最大値のインデックスになるようなone-hot表現にしたいです.
csvは
x     y
[1,2,,,,,,,,64] [0]
:
[1,2,,,,,,,,64] [6]のような型です. これをnpzでは[1×64]の配列はそのままxとし,yは1から6までの数をone-hot表現に変換したいです.
作成したコード

import numpy as np import sys import argparse class csv2npz: def __init__(self): """ constructor """ pass def execute(self,inputcsvfileName,outputnpzfileName): """ Main Logic """ ## CSVファイルを開く ## fop = open(inputcsvfileName,"r") _ = fop.readline() ## 先頭ヘッダー行は捨てる ## 初期化 ## x = [] y = [] y_tmp = [] ## CSVを1行ずつ読み込んで分割+数値変換 ## ## (メモリ領域節約のため、1行ずつメモリに読み込みを行う) ## while True: line = fop.readline() if line: line = line.rstrip() a,e = line.split(",") x.append(np.array([int(i) for i in a.split(";") if self.is_num(i)])) y_tmp.append(int(e)) else: break ## 数値をone-hot vector形式に変換 ## targetFilter = list(set(y_tmp)) y = [np.eye(len(targetFilter)).astype("int64")[targetFilter.index(i)] for i in y_tmp] ## np.array形式に変換 ## x = np.asarray(x,dtype=np.int) y = np.asarray(y,dtype=np.int) ## 保存 ## np.savez(outputnpzfileName,x=x,y=y) def is_num(self,s): """ Check Number """ return s.replace(',', '').replace('.', '').replace('-', '').isnumeric() parser = argparse.ArgumentParser(description=""" It is an application that convert csv files to npz files. (example)$ python csv2npz.py ./input.csv ./output.npz""") parser.add_argument( 'input_csvfile_path', action='store', nargs=None, const=None, default=None, type=str, choices=None, help='Target File Path.', metavar=None) parser.add_argument( "output_file_name", action='store', nargs=None, const=None, default=None, type=str, choices=None, help='OutPut File Name.', metavar=None) args = parser.parse_args() ## Pick Up File Name ## inputFileName = args.input_csvfile_path outputFileName = args.output_file_name print(inputFileName) print(outputFileName) ## Logic Execute ## exe = csv2npz() exe.execute(inputFileName,outputFileName)

実行したい時は以下のように書きました.

import numpy as np import sys import argparse class csv2npz: def __init__(self): """ constructor """ pass def execute(self,inputcsvfileName,outputnpzfileName): """ Main Logic """ ## CSVファイルを開く ## fop = open(inputcsvfileName,"r") _ = fop.readline() ## 先頭ヘッダー行は捨てる ## 初期化 ## x = [] y = [] y_tmp = [] ## CSVを1行ずつ読み込んで分割+数値変換 ## ## (メモリ領域節約のため、1行ずつメモリに読み込みを行う) ## while True: line = fop.readline() if line: line = line.rstrip() a,e = line.split(",") x.append(np.array([int(i) for i in a.split(";") if self.is_num(i)])) y_tmp.append(int(e)) else: break ## 数値をone-hot vector形式に変換 ## targetFilter = list(set(y_tmp)) y = [np.eye(len(targetFilter)).astype("int64")[targetFilter.index(i)] for i in y_tmp] ## np.array形式に変換 ## x = np.asarray(x,dtype=np.int) y = np.asarray(y,dtype=np.int) ## 保存 ## np.savez(outputnpzfileName,x=x,y=y) def is_num(self,s): """ Check Number """ return s.replace(',', '').replace('.', '').replace('-', '').isnumeric() parser = argparse.ArgumentParser(description=""" It is an application that convert csv files to npz files. (example)$ python csv2npz.py ./input.csv ./output.npz""") parser.add_argument( 'C:/Users/name/Desktop/myo-python-1.0.4/myo-armband-nn-master/name', action='store', nargs=None, const=None, default=None, type=str, choices=None, help='C:/Users/name/Desktop/myo-python-1.0.4/myo-armband-nn-master.', metavar=None) parser.add_argument( "name.npz", action='store', nargs=None, const=None, default=None, type=str, choices=None, help='name.npz.', metavar=None) args = parser.parse_args() ## Pick Up File Name ## inputFileName = args.input_csvfile_path outputFileName = args.output_file_name print(inputFileName) print(outputFileName) ## Logic Execute ## exe = csv2npz() exe.execute(inputFileName,outputFileName) コード

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

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

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

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

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

ppaul

2021/01/08 07:31

タイトルは、「npzからcsvに変換したい」で、本文は「csvからnpzに変換するプログラムを作成した」ですね。どちらかに揃えてください。 csvからnpzに変換するとき、どの単位で変換するのかが分かりません。csvファイルの全体を二次元のndarrayとして読み込むのか、各行を一次元のndarrayとして読み込むのかで、返還後のnpzファイルは異なります。そういうような条件を質問を編集して書き込んでください。 そうでないと、回答のしようがありません。
tazaryu

2021/01/08 09:58

変換したいname.csvからname.npzです.xは[1,64],yは[1,6]配列になっています. yは1~5のラベルになっており,npz変換時に[0,1,0,0,0,0]のようなラベルの数が最大値のインデックスになるようなone-hot表現にしたいです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問