回答編集履歴
1
answer
CHANGED
|
@@ -1,29 +1,38 @@
|
|
|
1
|
-
元の配列(`R`)と同じshapeの boolean 配列(初期値は`False`)を作成して、全ての要素が 0 である行と列を除いた配列要素を `True` に設定します。(以下のコードの`mask`配列)
|
|
2
|
-
|
|
1
|
+
> ①の状態にしてから、とある作業をして、また復元したいと考えています。
|
|
3
2
|
|
|
3
|
+
[pandas.Series.combine_first — pandas 2.3.3 documentation](https://pandas.pydata.org/docs/reference/api/pandas.Series.combine_first.html) を利用して、データフレーム`R2`の欠損値(全て要素が`0`の行と列)をデータフレーム`R`で埋め合わせます(補完)。
|
|
4
|
+
|
|
4
5
|
```python
|
|
5
|
-
import numpy as np
|
|
6
6
|
import pandas as pd
|
|
7
7
|
|
|
8
|
-
R = pd.read_csv("R.csv",header=None)
|
|
8
|
+
R = pd.read_csv("R.csv",header=None)
|
|
9
9
|
print(R)
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
# delete rows and columns where all elements are 0
|
|
12
|
-
|
|
12
|
+
R2 = R.loc[~R.eq(0).all(axis=1), ~R.eq(0).all(axis=0)]
|
|
13
|
+
print(R2)
|
|
13
14
|
|
|
14
|
-
|
|
15
|
+
# calculate
|
|
15
|
-
|
|
16
|
+
R2 += 1
|
|
16
17
|
|
|
18
|
+
# restore rows and columns where all elements are 0
|
|
17
|
-
R2 =
|
|
19
|
+
R2 = R2.combine_first(R).to_numpy()
|
|
18
20
|
print(R2)
|
|
19
21
|
|
|
22
|
+
# 0 1 2 3
|
|
20
|
-
#
|
|
23
|
+
# 0 1 2 0 4
|
|
21
|
-
#
|
|
24
|
+
# 1 3 0 0 0
|
|
22
|
-
#
|
|
25
|
+
# 2 0 0 0 0
|
|
23
|
-
#
|
|
26
|
+
# 3 5 0 0 0
|
|
24
27
|
#
|
|
28
|
+
# 0 1 3
|
|
29
|
+
# 0 1 2 4
|
|
30
|
+
# 1 3 0 0
|
|
31
|
+
# 3 5 0 0
|
|
32
|
+
#
|
|
25
33
|
# [[2 3 0 5]
|
|
26
34
|
# [4 1 0 1]
|
|
27
35
|
# [0 0 0 0]
|
|
28
36
|
# [6 1 0 1]]
|
|
29
|
-
```
|
|
37
|
+
```
|
|
38
|
+
|