質問編集履歴
5
問題が数点解決されたため、現状のコードをまとめました
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
-
|
1
|
+
#実現したい事
|
2
2
|
|
3
|
+
dsというデータフレームのFxという列にあるデータについて、以下のように処理を行っています。
|
4
|
+
|
3
|
-
現在はds['Fx'][0:29]について計算をするとtupleで1値が与えられ、その値をds['psd_px'][0:29]に30個連続で同じ値が代入されるという形になっています。
|
5
|
+
現在はds['Fx'][0:29]について計算をするとtupleで1値が与えられ、その値をds['psd_px'][0:29]に30個連続で同じ値が代入されるという形になっています。
|
4
6
|
|
5
7
|
|
6
8
|
|
@@ -26,23 +28,17 @@
|
|
26
28
|
|
27
29
|
|
28
30
|
|
29
|
-
|
31
|
+
上記を、[0:29]の処理が終わった後、続けて[30:59]の計算をして[30:59]に同じ値が代入される、のように30個ずつ続けて最後の行まで繰り返すような実装を行いたいと考えています。
|
30
32
|
|
31
|
-
このような繰り返し実装を行う方法を教えて頂きたいです。
|
33
|
+
このような繰り返し実装を行う方法を教えて頂きたいです。
|
32
34
|
|
33
|
-
|
35
|
+
ご指導よろしくお願いいたします。
|
34
36
|
|
35
37
|
|
36
38
|
|
37
|
-
|
39
|
+
#現状
|
38
40
|
|
39
41
|
皆さんのアドバイスを参考に以下のように組みなおした所、for文を使って繰り返し値を代入することが出来ました。
|
40
|
-
|
41
|
-
残りの解決したい問題としては以下の一点です。
|
42
|
-
|
43
|
-
① 結果を出すためにnumsというリストを作ったが、本来は最後の行まで行けば終了としたい
|
44
|
-
|
45
|
-
(このコードを将来的にいくつかのファイルに適応させたい、ファイルによって行数が異なるため一つの値に定められない)
|
46
42
|
|
47
43
|
|
48
44
|
|
@@ -50,24 +46,30 @@
|
|
50
46
|
|
51
47
|
nums = [0,1,2,3]
|
52
48
|
|
53
|
-
|
49
|
+
xlist = []
|
50
|
+
|
51
|
+
ylist = []
|
54
52
|
|
55
53
|
for i in nums:
|
56
54
|
|
57
|
-
#psd検出
|
58
|
-
|
59
55
|
f,psd=signal.welch(ds['Fx'][i*30:(i+1)*30-1])
|
60
|
-
|
61
|
-
#ピーク検出
|
62
56
|
|
63
57
|
maxid = signal.argrelmax(psd, order=30)
|
64
58
|
|
65
|
-
|
59
|
+
xlist.extend(f[maxid])
|
66
60
|
|
67
|
-
|
61
|
+
ylist.extend(psd[maxid])
|
62
|
+
|
63
|
+
ds['PSDx_fx'] = pd.DataFrame(xlist)
|
64
|
+
|
65
|
+
ds['PSDy_fx'] = pd.DataFrame(ylist)
|
68
66
|
|
69
67
|
```
|
70
68
|
|
71
|
-
出力:
|
72
69
|
|
70
|
+
|
71
|
+
#質問
|
72
|
+
|
73
|
-
|
73
|
+
結果を出すために上記のコード上ではnumsというリストを作り、i==3となるまで繰り返しが行われるようになっているのですが、これをリストを使わず、ds['Fx']の列の末尾に来た段階で終了する、というように書き換えるにはどうすればよいでしょうか?
|
74
|
+
|
75
|
+
(このコードを将来的にいくつかのファイルに適応させたい、ファイルによって行数が異なるため一つの値に定められない)
|
4
アドバイスを参考にコードを書き換えた為編集しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -36,15 +36,13 @@
|
|
36
36
|
|
37
37
|
・現状できていること
|
38
38
|
|
39
|
-
皆さんのアドバイスを参考に以下のように組みなおしました。
|
39
|
+
皆さんのアドバイスを参考に以下のように組みなおした所、for文を使って繰り返し値を代入することが出来ました。
|
40
40
|
|
41
|
-
|
41
|
+
残りの解決したい問題としては以下の一点です。
|
42
42
|
|
43
43
|
① 結果を出すためにnumsというリストを作ったが、本来は最後の行まで行けば終了としたい
|
44
44
|
|
45
45
|
(このコードを将来的にいくつかのファイルに適応させたい、ファイルによって行数が異なるため一つの値に定められない)
|
46
|
-
|
47
|
-
② 出力されたlistがarrayで代入されている?
|
48
46
|
|
49
47
|
|
50
48
|
|
@@ -64,10 +62,12 @@
|
|
64
62
|
|
65
63
|
maxid = signal.argrelmax(psd, order=30)
|
66
64
|
|
67
|
-
maxlist.extend(maxid)
|
65
|
+
maxlist.extend(psd[maxid])
|
68
66
|
|
69
67
|
print(maxlist)
|
70
68
|
|
71
69
|
```
|
72
70
|
|
71
|
+
出力:
|
72
|
+
|
73
|
-
|
73
|
+
[0.3163878211460136, 0.002589652710584882, 0.00021522803200603837, 2.642731404207304e-05]
|
3
アドバイスを参考にコードを書き換えた為編集しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -36,15 +36,15 @@
|
|
36
36
|
|
37
37
|
・現状できていること
|
38
38
|
|
39
|
-
皆さんの
|
39
|
+
皆さんのアドバイスを参考に以下のように組みなおしました。
|
40
40
|
|
41
|
-
問題としては
|
41
|
+
起こっている問題としては
|
42
42
|
|
43
43
|
① 結果を出すためにnumsというリストを作ったが、本来は最後の行まで行けば終了としたい
|
44
44
|
|
45
45
|
(このコードを将来的にいくつかのファイルに適応させたい、ファイルによって行数が異なるため一つの値に定められない)
|
46
46
|
|
47
|
-
② 出力され
|
47
|
+
② 出力されたlistがarrayで代入されている?
|
48
48
|
|
49
49
|
|
50
50
|
|
@@ -52,22 +52,22 @@
|
|
52
52
|
|
53
53
|
nums = [0,1,2,3]
|
54
54
|
|
55
|
+
maxlist = []
|
56
|
+
|
55
57
|
for i in nums:
|
56
58
|
|
57
|
-
#psd検出
|
59
|
+
#psd検出
|
58
60
|
|
59
|
-
f,psd=signal.welch(ds['Fx'][i*30:(i+1)*30-1])
|
61
|
+
f,psd=signal.welch(ds['Fx'][i*30:(i+1)*30-1])
|
60
62
|
|
61
|
-
#ピーク検出
|
63
|
+
#ピーク検出
|
62
64
|
|
63
|
-
maxid = signal.argrelmax(psd, order=30)
|
65
|
+
maxid = signal.argrelmax(psd, order=30)
|
64
66
|
|
65
|
-
|
67
|
+
maxlist.extend(maxid)
|
66
68
|
|
67
|
-
ds['psd_px']=np.nan
|
68
|
-
|
69
|
-
ds.loc[i*30:(i+1)*30-1,'psd_px']=maxid
|
70
|
-
|
71
|
-
print(
|
69
|
+
print(maxlist)
|
72
70
|
|
73
71
|
```
|
72
|
+
|
73
|
+
出力:[array([1], dtype=int64), array([1], dtype=int64), array([3], dtype=int64), array([5], dtype=int64)]
|
2
質問内容について追記しました:質問は繰り返し実装の方法を教えていただきたいというものですが、現状できているコードと問題点についても追記しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,16 +1,6 @@
|
|
1
|
-
dsというデータフレームのFxという列にあるデータについて、以下のように処理を行っています。
|
1
|
+
**dsというデータフレームのFxという列にあるデータについて、以下のように処理を行っています。
|
2
2
|
|
3
|
-
現在はds['Fx'][0:29]について計算をするとtupleで1値が与えられ、その値をds['psd_px'][0:29]に30個連続で同じ値が代入されるという形になっています。
|
3
|
+
現在はds['Fx'][0:29]について計算をするとtupleで1値が与えられ、その値をds['psd_px'][0:29]に30個連続で同じ値が代入されるという形になっています。**
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
それを、[0:29]の処理が終わった後、続けて[30:59]の計算をして[30:59]に同じ値が代入される、のように30個ずつ続けて列の最終まで繰り返すような実装を行いたいと考えています。
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
繰り返し処理の実装方法について、アドバイスを頂きたく投稿いたしました。
|
12
|
-
|
13
|
-
ご指導よろしくお願いいたします。
|
14
4
|
|
15
5
|
|
16
6
|
|
@@ -36,4 +26,48 @@
|
|
36
26
|
|
37
27
|
|
38
28
|
|
29
|
+
**上記を、[0:29]の処理が終わった後、続けて[30:59]の計算をして[30:59]に同じ値が代入される、のように30個ずつ続けて最後の行まで繰り返すような実装を行いたいと考えています。
|
30
|
+
|
31
|
+
このような繰り返し実装を行う方法を教えて頂きたいです。**
|
32
|
+
|
33
|
+
**ご指導よろしくお願いいたします。**
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
・現状できていること
|
38
|
+
|
39
|
+
皆さんの質問を参考に以下のように記入しました。
|
40
|
+
|
41
|
+
問題としては2点で、
|
42
|
+
|
43
|
+
① 結果を出すためにnumsというリストを作ったが、本来は最後の行まで行けば終了としたい
|
44
|
+
|
45
|
+
(このコードを将来的にいくつかのファイルに適応させたい、ファイルによって行数が異なるため一つの値に定められない)
|
46
|
+
|
47
|
+
② 出力されるリストにmaxidの値が入っていない
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
```python
|
52
|
+
|
53
|
+
nums = [0,1,2,3]
|
54
|
+
|
55
|
+
for i in nums:
|
56
|
+
|
57
|
+
#psd検出
|
58
|
+
|
59
|
+
f,psd=signal.welch(ds['Fx'][i*30:(i+1)*30-1])
|
60
|
+
|
61
|
+
#ピーク検出
|
62
|
+
|
63
|
+
maxid = signal.argrelmax(psd, order=30)
|
64
|
+
|
65
|
+
#maxidは'tuple'で出てくるみたいなので、それをDFに変換
|
66
|
+
|
67
|
+
ds['psd_px']=np.nan
|
68
|
+
|
39
|
-
|
69
|
+
ds.loc[i*30:(i+1)*30-1,'psd_px']=maxid
|
70
|
+
|
71
|
+
print(ds)
|
72
|
+
|
73
|
+
```
|
1
質問内容について追記しました:繰り返し処理の実装についてアドバイスを頂きたいです。
test
CHANGED
File without changes
|
test
CHANGED
@@ -7,6 +7,8 @@
|
|
7
7
|
それを、[0:29]の処理が終わった後、続けて[30:59]の計算をして[30:59]に同じ値が代入される、のように30個ずつ続けて列の最終まで繰り返すような実装を行いたいと考えています。
|
8
8
|
|
9
9
|
|
10
|
+
|
11
|
+
繰り返し処理の実装方法について、アドバイスを頂きたく投稿いたしました。
|
10
12
|
|
11
13
|
ご指導よろしくお願いいたします。
|
12
14
|
|
@@ -31,3 +33,7 @@
|
|
31
33
|
|
32
34
|
|
33
35
|
```
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
for文で実装を試みましたが、int型は繰り返しが出来ない等のエラーが出てしまいうまくいっていません。
|