回答編集履歴
3
追記
answer
CHANGED
@@ -25,4 +25,13 @@
|
|
25
25
|
idx0 は numpy.nonzero() で y=1 のインデックス[0, 4, ...]をとりだしていて、
|
26
26
|
idx は numpy のブロードキャストを使って [0, 1, 2, 3, 4, 4 + 0, 4 + 1, ...] を作っています。
|
27
27
|
|
28
|
+
|
29
|
+
**■追記**
|
30
|
+
|
28
|
-
|
31
|
+
idxがXの範囲を超える(Y=1のあと5行ない)場合があるケースでは、最後を下記に変更ください。
|
32
|
+
```python
|
33
|
+
mask = idx < len(data['X'])
|
34
|
+
newData = pd.DataFrame({
|
35
|
+
'X': data['X'].array[idx[mask]],
|
36
|
+
'L': np.arange(len(idx))[mask] // N + 1})
|
37
|
+
```
|
2
修正と追記
answer
CHANGED
@@ -14,14 +14,15 @@
|
|
14
14
|
|
15
15
|
N = 5
|
16
16
|
|
17
|
-
|
17
|
+
idx0, = np.nonzero(data['Y'].array == 1)
|
18
|
-
idx0, = np.nonzero(y == 1)
|
19
18
|
idx = np.ravel(np.arange(N) + idx0[:, None])
|
20
19
|
|
21
|
-
newData = pd.DataFrame(
|
20
|
+
newData = pd.DataFrame({
|
22
|
-
|
21
|
+
'X': data['X'].array[idx],
|
23
|
-
|
22
|
+
'L': np.arange(len(idx)) // N + 1})
|
24
23
|
```
|
25
24
|
|
26
25
|
idx0 は numpy.nonzero() で y=1 のインデックス[0, 4, ...]をとりだしていて、
|
27
|
-
idx は numpy のブロードキャストを使って [0, 1, 2, 3, 4, 4 + 0, 4 + 1, ...] を作っています。
|
26
|
+
idx は numpy のブロードキャストを使って [0, 1, 2, 3, 4, 4 + 0, 4 + 1, ...] を作っています。
|
27
|
+
|
28
|
+
**■ idxがXの範囲を超える場合のチェックが入っていないので、必要に応じて対応してください**
|
1
修正
answer
CHANGED
@@ -14,12 +14,12 @@
|
|
14
14
|
|
15
15
|
N = 5
|
16
16
|
|
17
|
-
y =
|
17
|
+
y = data['Y'].array
|
18
18
|
idx0, = np.nonzero(y == 1)
|
19
19
|
idx = np.ravel(np.arange(N) + idx0[:, None])
|
20
20
|
|
21
21
|
newData = pd.DataFrame()
|
22
|
-
newData["X"] = data['X'].
|
22
|
+
newData["X"] = data['X'].array[idx]
|
23
23
|
newData["L"] = np.arange(len(idx)) // N + 1
|
24
24
|
```
|
25
25
|
|