

csvファイルのデータを読み込んでその中の最大値を表示させたいのですが下記の通りエラーとなってしまいます。  
（csvファイルはオシロスコープで計測したものです）  
どなたかご回答よろしくお願いします。

**プログラム**

[code]

    import csv
    import matplotlib.pyplot as plt
    import numpy as np
    csvfile = r'C:\Users\ryoma\Documents\学習用　python\test1khz.csv'
    
    f=open(csvfile,"r")
    reader = csv.reader(f)
    data = [v for v in reader]
    f.close()
    
    np.max(data)
    
[/code]

**エラーメッセージ**

[code]

    TypeError                                 Traceback (most recent call last)
    <ipython-input-11-b6a52add7c26> in <module>
    ----> 1 np.max(data)
    
    ~\Anaconda3\lib\site-packages\numpy\core\fromnumeric.py in amax(a, axis, out, keepdims, initial)
       2503     """
       2504     return _wrapreduction(a, np.maximum, 'max', axis, None, out, keepdims=keepdims,
    -> 2505                           initial=initial)
       2506 
       2507 
    
    ~\Anaconda3\lib\site-packages\numpy\core\fromnumeric.py in _wrapreduction(obj, ufunc, method, axis, dtype, out, **kwargs)
         84                 return reduction(axis=axis, out=out, **passkwargs)
         85 
    ---> 86     return ufunc.reduce(obj, axis, dtype, out, **passkwargs)
         87 
         88 
    
    TypeError: cannot perform reduce with flexible type
    
[/code]


CC BY-SA 4.0
2019-06-09T07:17:45.530
55643
2019-07-05T15:30:05.870
2019-06-09T07:35:54.637
3060
31570
question
python python3
読み込んだcsvファイルに対する処理のエラー


エラーの原因は変数 `data` のリストの末端の要素が文字列であることです。np.sum
は基本的には数値の合計を求めるものですから、文字列の合計は定義されておらずエラーとなっていると思われます。data
変数のリストの要素がすべて数値を表す文字列であるなら、以下のように、数値を表す文字列を、数値に変換することができます。これにより、np.sum
でエラーは発生しなくなると思います。

(修正前)

[code]

    data = [v for v in reader]
    
[/code]

(修正後)

[code]

    data = np.asarray([v for v in reader], dtype=np.float32)
    
[/code]


CC BY-SA 4.0
2019-07-05T15:30:05.870
56428
2019-07-05T15:30:05.870
45
55643
answer