前提・実現したいこと
閲覧いただきありがとうございます.
Excel.csvファイルを読み込んで100個のデータごとに二乗平均平方根(RMS)を行い別のExcel.csvファイルに出力しようと考えています.
自分なりにプログラムを作ってみたのですがうまく実行できません.
読みこむExcel.csvファイルは例として下のようになります.
A列,B列のデータは4500行くらいまであり,B列をRMSしたいと考えております.
よろしくお願いいたします.
発生している問題・エラーメッセージ
プログラムが書けない.
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-4-2b1f58483765> in <module>() 16 data = pd.read_csv("P_emg-1524717370.csv",index_col="time") 17 df_emg1 = data.iloc[:,[0]] ---> 18 RMS1 = window_rms(df_emg1,WINDOW_SIZE) 19 df_RMS_emg1 = RMS1 20 <ipython-input-4-2b1f58483765> in window_rms(a, window_size) 11 a2 = np.power(a,2) 12 window = np.ones(window_size)/float(window_size) ---> 13 return np.sqrt(np.convolve(a2, window,"same")) 14 15 #csvファイル読み込み ~\Anaconda3\lib\site-packages\numpy\core\numeric.py in convolve(a, v, mode) 1034 raise ValueError('v cannot be empty') 1035 mode = _mode_from_name(mode) -> 1036 return multiarray.correlate(a, v[::-1], mode) 1037 1038 ValueError: object too deep for desired array
該当のソースコード
coding: utf-8
import csv
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
import pandas as pd
WINDOW_SIZE=100
#RMSの式を作成
def window_rms(a, window_size):
a2 = np.power(a,2)
window = np.ones(window_size)/float(window_size)
return np.sqrt(np.convolve(a2, window,"same"))
#csvファイル読み込み
data = pd.read_csv("example.csv",index_col="semit")
df_iwhr1 = data.iloc[:,[0]]
RMS1 = window_rms(df_iwhr1,WINDOW_SIZE)
df_RMS_iwhr1 = RMS1
csvファイルの作成
csvfile = open ("new1.csv",'w',newline="")
df_RMS_iwhr1.to_csv(csvfile)
python
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー