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

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

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

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

CSV

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

NumPy

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

Python

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

Q&A

1回答

2893閲覧

loadtxtの引数のusecolsの扱いについて

vermouth4649

総合スコア4

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

CSV

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

NumPy

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

Python

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

0グッド

0クリップ

投稿2020/01/10 07:50

非常に基礎的な内容ですが、解決できないのでお願いします

python

1 2import numpy as np 3import math 4filepath = r'C:\Users\yes\Desktop' 5f = filepath + '\' + 'long100-300nonnormalizedresult(Ch.1).csv' 6 7event = np.loadtxt(f, dtype=np.str, delimiter='/t', skiprows=(1), usecols=(1) ) 8 9print(event)

このように入力したのですが、usecolsをloadtxtの因数に含めるとエラーが出てしまいます。(IndexError: list index out of range)このようなエラーです。なぜこのようなエラーが出るのか教えて下さい。エクセルファイルの二行目だけほしいので、このような引数を利用しています。以下、エラー文です。

IndexError Traceback (most recent call last)
<ipython-input-31-55a2b9006923> in <module>
4 f = filepath + '' + 'long100-300nonnormalizedresult(Ch.1).csv'
5
----> 6 event = np.loadtxt(f, dtype=np.str, delimiter='/t', skiprows=(1), usecols=(1) )
7
8 print(event)

~\Anaconda3\lib\site-packages\numpy\lib\npyio.py in loadtxt(fname, dtype, comments, delimiter, converters, skiprows, usecols, unpack, ndmin, encoding)
1099 # converting the data
1100 X = None
-> 1101 for x in read_data(_loadtxt_chunksize):
1102 if X is None:
1103 X = np.array(x, dtype)

~\Anaconda3\lib\site-packages\numpy\lib\npyio.py in read_data(chunk_size)
1019 continue
1020 if usecols:
-> 1021 vals = [vals[j] for j in usecols]
1022 if len(vals) != N:
1023 line_num = i + skiprows + 1

~\Anaconda3\lib\site-packages\numpy\lib\npyio.py in <listcomp>(.0)
1019 continue
1020 if usecols:
-> 1021 vals = [vals[j] for j in usecols]
1022 if len(vals) != N:
1023 line_num = i + skiprows + 1

IndexError: list index out of range

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

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

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

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

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

guest

回答1

0

/tではなく\tとしないと正しい区切り文字ではありません。

投稿2020/01/10 07:53

hayataka2049

総合スコア30933

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

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

vermouth4649

2020/01/10 07:54

どちらでも同じことだと思います
hayataka2049

2020/01/10 07:55

TAB文字を現したいのであれば\tとする必要があります(エスケープシーケンス)。 /tは特別な効果はないので単に/tという文字列になりますね。
vermouth4649

2020/01/10 08:06

失礼しました。誤認しておりました。しかし、そのような操作をしても、やはりエラーは変わりません。おそらくusecolsに問題があると思うのですがじっさいにはよくわかりません。初心者ですので、ご迷惑おかけるかもしれませんが、よろしくお願いします。
hayataka2049

2020/01/10 08:10

コードとしてはこれで問題なさそうなので、あとは2行もない、2列もない、そもそもタブ区切りではなかったり列数が一定しないなどフォーマットが整っていない、など様々な原因が考えられます。 どこかのアップローダや共有ドライブにファイルをアップロードしていただき、リンクを教えていただければこちらでも確認できます。
vermouth4649

2020/01/10 08:17

すみません、再度アップしました。14360.CSVでDLパスはvermouthです。よろしくお願いします。
hayataka2049

2020/01/10 08:23 編集

アップロードし直された方のデータについてはそのパスワードではうまくダウンロードできませんでした。 14359.CSVの方は落とせましたが、 ・エンコーディングがshift-jisのようです。これはそちらの環境で問題なければ気にしなくていいです。 ・区切り文字はカンマのようです。 delimiter=","を指定する必要があるでしょう。そちらの環境でテキストエディタでcsvを開けば確認できます。
vermouth4649

2020/01/10 08:43

なるほど、そのような変換をすることで、エラーなく正しく2行目を抽出することができました。 ありがとうございます。少し解釈の問題で伺いたいことがあるのですが、 delimiterについて:この区切り方というのは、出力時の区切り方と思っていましたが、読み込む元のファイルの区切り方という解釈でよろしいでしょうか。 (しかし、それだと/tでもusecolsさえなければ出力できたのがよくわかりません) 初歩的な質問かもしれませんがよろしくお願いします。
hayataka2049

2020/01/10 08:47

CSVファイルで使っている区切り文字を使用します。詳細は https://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html を確認してください。 区切り文字を認識できなければ1列のCSVとして取り扱われ、usecolsを指定しなければ全列出力するのでエラーにはならないはずです(その場合は0列目は存在しても1列目は存在しないので指定するとエラーになる)。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問