

Python3でnumpyを用いて以下のエラーが出て困っています。

[code]

    ValueError: could not convert string to float: b'0,000000'
    
[/code]

arena.txtの中身は以下のとおりです。

[code]

    1   0,000000    4,219309    4,219309    8,988674    8,988674    10,848450
    2   4,219309    7,414822    7,414822    12,430150   12,430150   14,198310
    3   8,000000    10,478795   10,478795   15,417747   15,417747   17,297929
    1   11,000000   14,257995   14,257995   19,009302   19,009302   20,873072
    
[/code]

プログラムは以下のとおりです。

[code]

    import numpy as np    
    
    cps,s_load,f_load,s_process,f_process,s_unload,f_unload = np.loadtxt('arena.txt', unpack=True)
    
[/code]

numpyを使わない方法でも構いません。よろしくお願いします。


CC BY-SA 3.0
2015-11-26T02:43:08.090
19311
2018-05-22T07:28:41.253
2018-05-22T07:28:41.253
3060
13411
question
python python3 numpy
Python3でnumpyを用いてエラーが出ます

[code]

    ValueError: could not convert string to float: b'0,000000'
    
[/code]

これは、string型をfloatに変換できないと言っています。  
numpyでcsvをインポートする際、デフォルトでfloatデータを指定して取得するらしいです。なので、

[code]

    np.loadtxt('arena.txt', unpack=True)
    
[/code]

を

[code]

    np.genfromtxt("arena.txt", dtype = None, delimiter = "\t")
    
[/code]

に変えればできると思われます。

<https://review-of-my-life.blogspot.jp/2017/11/numpycsv.html>


CC BY-SA 3.0
2017-11-23T01:59:18.490
39778
2017-11-23T01:59:18.490
26305
19311
answer


数値の小数点記号がカンマ `,` になっていたのをピリオド `.` に直したところ上手くいきました。

\-- [user9156
さんのコメント](https://ja.stackoverflow.com/questions/19311/python3%E3%81%A7numpy%E3%82%92%E7%94%A8%E3%81%84%E3%81%A6%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E5%87%BA%E3%81%BE%E3%81%99#comment17977_19311)、および[質問者さんのコメント](https://ja.stackoverflow.com/questions/19311/python3%E3%81%A7numpy%E3%82%92%E7%94%A8%E3%81%84%E3%81%A6%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E5%87%BA%E3%81%BE%E3%81%99#comment17985_19311)より。


CC BY-SA 3.0
2017-11-23T02:44:32.187
39780
2017-11-23T02:44:32.187
19110
19311
answer


数値の小数点記号に`,`(カンマ)を使っている国もあります（参照
[Wikipedia](https://ja.wikipedia.org/wiki/%E5%B0%8F%E6%95%B0%E7%82%B9)）。

Pandas
の`read_csv`は小数点の`,`に対応していて、オプションで`decimal=','`とすることで小数点記号が`,`の数値を読むことができます。今回のケースであれば、Pandas
を使うと以下のように書けます。

[code]

    import pandas as pd
    df = pd.read_csv('arena.txt', header=None, delim_whitespace=True, decimal=',')
    
[/code]


CC BY-SA 4.0
2018-05-22T01:22:34.077
44143
2018-05-22T01:22:34.077
15171
19311
answer