python에 관하여 도와주세요..
안녕하세요...
내용이 조금 길더라도 꼭 좀 봐주세요. 몇일째 못하고 있어 답답해요ㅠㅠ..
일단 제 데이타가
1번 https://bpaste.net/show/04c6b1c5d566 총 2520 라인의 데이터
2번 https://bpaste.net/show/3171214e5b9d 총 359 라인의 데이터
에 있습니다.
그리고 2번의 데이타를 읽는 코드는
https://bpaste.net/show/ed9bcc571481
이것입니다.
제가 하고자 하는것은.. 1번데이타에 있는 첫번째 10줄 데이타의 평균값을 2번 데이터의 마지막 element 에 넣고 싶습니다..
그리고 다음 index 에는 그 다음 5줄의 평균 데이타 를 넣고.. 그 다음 10줄에 대한 평균값... 이런식으로
밑에 있는 식처럼요..
[(0.0, 0.0, 30.0, 42.0, 8.0, 8.0, 6.0, 7.0, 2.0, 270.0, 826.0, 475.0, 102.0, 109.0, 0.0, 0.0, 15.0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 28.401716 (첫번째 10줄에 대한 평균값 열 1-10 ))), (0.0, 0.0, 20.0, 26.0, 6.0, 6.0, 3.0, 5.0, 2.0, 270.0, 826.0, 475.0, 102.0, 109.0, 0.0, 0.0, 10.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 28.26632 (그 다음 5줄에 대한 평균값) (열 11-15) ), (0.0, 0.0, 29.0, 41.0, 9.0, 9.0, 5.0, 6.0, 2.0, 270.0, 826.0, 475.0, 102.0, 109.0, 0.0, 0.0, 9.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 28.194 (그 다음 10줄에 대한 평균값) (열 16-25))
이런식으로 10줄 평균, 5줄 평균, 10줄 평균, ..... 이런식으로요
왜이렇게 하냐면.. 2번째 데이터가 5초마다 수집한것이고 1번데이타는 1초씩 이기 때문이에요.. 근데
1번 데이타가 정확히 1초씩이 아니라서.. filtering 을 좀 하려고자 합니다.
근데 앞에서 2번 데이터는 359개이고.. 1번 데이터는 2520 인데.. 10줄, 5줄, 10줄, 5줄로 하다보면
안맞을때가 오는데.. 마지막 남은것들은 다 평균값으로 내고 싶어요..
바쁘시겠지만.. 제발 도와주세요.. 감사합니다


A 에서 5번 10번 5번의 평균값을 B 에 추가하기
하라는 말인거죠. ㅇ_ㅇ;;
Python은 모르니까. C로 대충 한번 만들어보죠.
헐. 잠깐 해봤는데. atof() 실수값이 정확하게 되지 않네요. ㄷㄷ;;
대충 한번 구현해보니 되긴 하네요.
#include <cstdlib> #include <iostream> using namespace std; //A 에서 5번 10번의 평균값을 B 에 추가하기 int main(int argc, char *argv[]) { // FILE * fp; fp = fopen("a.txt", "rt"); if(fp == NULL) return 0; // FILE * fp2; fp2 = fopen("b.txt", "wt"); if(fp2 == NULL) return 0; // int cnt=0; int pos=0; char buf[100]; double db = 0.0; double tmp = 0.0; while(1) { memset(buf, '\0', 100); char * p = fgets(buf, 100, fp); if( p == NULL ) { break; } if(0 <= pos && pos <= 4) { tmp = atof(buf); db = db + tmp; printf("%d[ %d] ", pos, cnt); cnt++; if(cnt == 5) { db = db / 5.0; printf("\n"); printf("[0~4 까지의 평균값 : %5.12f]\n", db); printf("\n"); fprintf(fp2, "%5.12f\n", db); db = 0.0; cnt = 0; } } if(5 <= pos && pos <= 14) { tmp = atof(buf); db = db + tmp; printf("%d[ %d] ", pos, cnt); cnt++; if(cnt == 10) { db = db / 10.0; printf("\n"); printf("[5~15 까지의 평균값 : %5.12f]\n", db); printf("\n"); fprintf(fp2, "%5.12f\n", db); db = 0.0; cnt = 0; } } pos++; } fclose(fp); fclose(fp2); system("PAUSE"); return EXIT_SUCCESS; }----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
댓글 달기