回答編集履歴
3
追記
test
CHANGED
@@ -52,4 +52,22 @@
|
|
52
52
|
|
53
53
|
|
54
54
|
|
55
|
+
|
56
|
+
|
57
|
+
**■追記**
|
58
|
+
|
59
|
+
|
60
|
+
|
55
|
-
|
61
|
+
idxがXの範囲を超える(Y=1のあと5行ない)場合があるケースでは、最後を下記に変更ください。
|
62
|
+
|
63
|
+
```python
|
64
|
+
|
65
|
+
mask = idx < len(data['X'])
|
66
|
+
|
67
|
+
newData = pd.DataFrame({
|
68
|
+
|
69
|
+
'X': data['X'].array[idx[mask]],
|
70
|
+
|
71
|
+
'L': np.arange(len(idx))[mask] // N + 1})
|
72
|
+
|
73
|
+
```
|
2
修正と追記
test
CHANGED
@@ -30,19 +30,17 @@
|
|
30
30
|
|
31
31
|
|
32
32
|
|
33
|
-
|
33
|
+
idx0, = np.nonzero(data['Y'].array == 1)
|
34
|
-
|
35
|
-
idx0, = np.nonzero(y == 1)
|
36
34
|
|
37
35
|
idx = np.ravel(np.arange(N) + idx0[:, None])
|
38
36
|
|
39
37
|
|
40
38
|
|
41
|
-
newData = pd.DataFrame(
|
39
|
+
newData = pd.DataFrame({
|
42
40
|
|
43
|
-
|
41
|
+
'X': data['X'].array[idx],
|
44
42
|
|
45
|
-
|
43
|
+
'L': np.arange(len(idx)) // N + 1})
|
46
44
|
|
47
45
|
```
|
48
46
|
|
@@ -51,3 +49,7 @@
|
|
51
49
|
idx0 は numpy.nonzero() で y=1 のインデックス[0, 4, ...]をとりだしていて、
|
52
50
|
|
53
51
|
idx は numpy のブロードキャストを使って [0, 1, 2, 3, 4, 4 + 0, 4 + 1, ...] を作っています。
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
**■ idxがXの範囲を超える場合のチェックが入っていないので、必要に応じて対応してください**
|
1
修正
test
CHANGED
@@ -30,7 +30,7 @@
|
|
30
30
|
|
31
31
|
|
32
32
|
|
33
|
-
y =
|
33
|
+
y = data['Y'].array
|
34
34
|
|
35
35
|
idx0, = np.nonzero(y == 1)
|
36
36
|
|
@@ -40,7 +40,7 @@
|
|
40
40
|
|
41
41
|
newData = pd.DataFrame()
|
42
42
|
|
43
|
-
newData["X"] = data['X'].
|
43
|
+
newData["X"] = data['X'].array[idx]
|
44
44
|
|
45
45
|
newData["L"] = np.arange(len(idx)) // N + 1
|
46
46
|
|