質問編集履歴
2
w,k,nが何を示しているのか誤解を招くような形で書いていたので修正しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -60,27 +60,66 @@
|
|
60
60
|
1つ目:[[1/3, 1/4, 1/4, 1/3, 1/4, 1/4],[1/3, 1/4, 1/4, 1/6, 1/4, 1/4],[1/6, 1/4, 1/4, 1/6, 1/4, 1/4],[1/6, 1/4, 1/4, 1/3, 1/4, 1/4]]
|
61
61
|
2つ目:[5/3, 3/2, 4/3, 3/2]
|
62
62
|
|
63
|
+
**計算ルール**
|
64
|
+
まず、items_each_columnではdataの○列の記号の種類数を列ごとにリストに格納しています。
|
65
|
+
それが、
|
66
|
+
```python
|
67
|
+
items_each_column = []
|
68
|
+
for c in zip(*data):
|
69
|
+
items_each_column.append(len(set(c)))
|
63
|
-
|
70
|
+
print(items_each_column)
|
71
|
+
```
|
72
|
+
で示しています。
|
64
|
-
|
73
|
+
items_each_column = [3, 4, 2, 3, 4, 3]
|
65
74
|
|
66
|
-
|
75
|
+
次に、num_2は列に存在している記号の数を列ごとにリストに入れています。
|
76
|
+
それが、
|
77
|
+
```python
|
67
|
-
|
78
|
+
frequency = []
|
68
79
|
|
80
|
+
for z in zip(*data):
|
81
|
+
frequency.append(z)
|
82
|
+
z_list = list(z)
|
69
|
-
|
83
|
+
nx = list(map(Counter,map(list, zip(*data))))
|
70
|
-
つまり、[[1/3, 1/4, 1/4, 1/3, 1/4, 1/4],[1/3, 1/4, 1/4, 1/6, 1/4, 1/4],[1/6, 1/4, 1/4, 1/6, 1/4, 1/4],[1/6, 1/4, 1/4, 1/3, 1/4, 1/4]]の[0]は1行目の計算結果です。[3]は4行目の計算結果です。
|
71
84
|
|
72
|
-
**計算ルール**
|
73
|
-
k = [3, 4, 2, 3, 4, 3]
|
74
|
-
n = [[1, 1, 2], [1, 1, 1, 1], [2, 2], [2, 1, 1], [1, 1, 1, 1], [1, 1, 2]]
|
75
|
-
|
85
|
+
num = len(nx)
|
76
|
-
のとき、
|
77
|
-
1/[0]×[0][0]、1/[0]×[0][1]、1/[0]×[0][2]、1/[0]×[0][2]
|
78
|
-
#1/[0]×[0][2]を2回計算しているのはdataの1列目にDが2つあるからです。
|
79
|
-
1/[1]×[1][0]、1/[1]×[1][1]、1/[1]×[1][2]、1/[1]×[1][3]
|
80
|
-
1/[2]×[2][0]、1/[2]×[2][0]、1/[2]×[2][1]、1/[2]×[2][1]
|
81
|
-
#1/[1]×[2][0]を2回計算しているのはdataの3列目にCが2つあるからです。
|
82
|
-
#1/[1]×[2][1]を2回計算しているのはdataの3列目にEが2つあるからです。
|
83
86
|
|
87
|
+
|
88
|
+
num_2 = []
|
89
|
+
|
90
|
+
for i in range(num):
|
91
|
+
nj = []
|
92
|
+
for j in ["A", "B", "C", "D", "E"]:
|
93
|
+
ni = nx[i][j]
|
94
|
+
if ni == 0:
|
95
|
+
continue
|
96
|
+
nj.append(ni)
|
97
|
+
num_2.append(nj)
|
98
|
+
print(num_2)
|
99
|
+
```
|
100
|
+
で示しています。
|
101
|
+
num_2 = [[1, 1, 2], [1, 1, 1, 1], [2, 2], [2, 1, 1], [1, 1, 1, 1], [1, 1, 2]]
|
102
|
+
|
103
|
+
kは変数です。
|
104
|
+
nは変数です。
|
105
|
+
wは空のリストです。
|
106
|
+
|
107
|
+
そして、
|
108
|
+
1/items_each_column[0]*num_2[0][0], 1/items_each_column[1]*num_2[1][0], 1/items_each_column[2]*num_2[2][0], 1/items_each_column[3]*num_2[3][0], 1/items_each_column[4]*num_2[4][0], 1/items_each_column[5]*num_2[5][0]を計算したらw[0]に格納します。
|
109
|
+
1/items_each_column[0]*num_2[0][1], 1/items_each_column[1]*num_2[1][1], 1/items_each_column[2]*num_2[2][0], 1/items_each_column[3]*num_2[3][0], 1/items_each_column[4]*num_2[4][1], 1/items_each_column[5]*num_2[5][1]を計算したらw[1]に格納します。
|
110
|
+
1/items_each_column[0]*num_2[0][2], 1/items_each_column[1]*num_2[1][2], 1/items_each_column[2]*num_2[2][1], 1/items_each_column[3]*num_2[3][1], 1/items_each_column[4]*num_2[4][2], 1/items_each_column[5]*num_2[5][2]を計算したらw[2]に格納します。
|
111
|
+
1/items_each_column[0]*num_2[0][2], 1/items_each_column[1]*num_2[1][3], 1/items_each_column[2]*num_2[2][1], 1/items_each_column[3]*num_2[3][2], 1/items_each_column[4]*num_2[4][3], 1/items_each_column[5]*num_2[5][2]を計算したらw[3]に格納します。
|
112
|
+
|
113
|
+
|
114
|
+
#1/items_each_column[0]×num_2[0][2]を2回計算しているのはdataの1列目にDが2つあるからです。
|
115
|
+
#1/items_each_column[2]×num_2[2][0]を2回計算しているのはdataの3列目にCが2つあるからです。
|
116
|
+
#1/items_each_column[2]×num_2[2][1]を2回計算しているのはdataの3列目にEが2つあるからです。
|
117
|
+
#1/items_each_column[3]×num_2[3][0]を2回計算しているのはdataの4列目にAが2つあるからです。
|
118
|
+
#1/items_each_column[5]×num_2[5][2]を2回計算しているのはdataの6列目にEが2つあるからです。
|
119
|
+
|
120
|
+
w[0]~w[3]を各リストごとに計算したら、
|
121
|
+
[[1/3, 1/4, 1/4, 1/3, 1/4, 1/4],[1/3, 1/4, 1/4, 1/6, 1/4, 1/4],[1/6, 1/4, 1/4, 1/6, 1/4, 1/4],[1/6, 1/4, 1/4, 1/3, 1/4, 1/4]]
|
122
|
+
となります。
|
84
123
|
|
85
124
|
質問が長くて申し訳ございません。
|
86
125
|
|
1
計算ルールを追加しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -50,13 +50,16 @@
|
|
50
50
|
|
51
51
|
#出力結果
|
52
52
|
#[3, 4, 2, 3, 4, 3] ←print(items_each_column)の出力結果
|
53
|
-
[[1, 1, 2], [1, 1, 1, 1], [2, 2], [2, 1, 1], [1, 1, 1, 1], [1, 1, 2]] ←print(num_2)の出力結果
|
53
|
+
#[[1, 1, 2], [1, 1, 1, 1], [2, 2], [2, 1, 1], [1, 1, 1, 1], [1, 1, 2]] ←print(num_2)の出力結果
|
54
54
|
Traceback (most recent call last):
|
55
55
|
File "c:/Users/RRR/MyPython/.py", line 46, in <module>
|
56
56
|
w = [1/k * n for (kx, nxi) in zip(items_each_column[x], num_2[x][y])]
|
57
57
|
TypeError: 'int' object is not iterable
|
58
58
|
```
|
59
59
|
**得たい結果**
|
60
|
+
1つ目:[[1/3, 1/4, 1/4, 1/3, 1/4, 1/4],[1/3, 1/4, 1/4, 1/6, 1/4, 1/4],[1/6, 1/4, 1/4, 1/6, 1/4, 1/4],[1/6, 1/4, 1/4, 1/3, 1/4, 1/4]]
|
61
|
+
2つ目:[5/3, 3/2, 4/3, 3/2]
|
62
|
+
|
60
63
|
1/k*nをすると以下のような結果が計算できます。
|
61
64
|
[[1/3, 1/4, 1/4, 1/3, 1/4, 1/4],[1/3, 1/4, 1/4, 1/6, 1/4, 1/4],[1/6, 1/4, 1/4, 1/6, 1/4, 1/4],[1/6, 1/4, 1/4, 1/3, 1/4, 1/4]] ←恐らく割り算した値が出力されると思います。
|
62
65
|
|
@@ -65,6 +68,19 @@
|
|
65
68
|
|
66
69
|
次に、一次元リストの[1]と二次元リスト[1][0]から[1][2]を計算してwというのリストの[0]から[3]に入れたいです。
|
67
70
|
つまり、[[1/3, 1/4, 1/4, 1/3, 1/4, 1/4],[1/3, 1/4, 1/4, 1/6, 1/4, 1/4],[1/6, 1/4, 1/4, 1/6, 1/4, 1/4],[1/6, 1/4, 1/4, 1/3, 1/4, 1/4]]の[0]は1行目の計算結果です。[3]は4行目の計算結果です。
|
71
|
+
|
72
|
+
**計算ルール**
|
73
|
+
k = [3, 4, 2, 3, 4, 3]
|
74
|
+
n = [[1, 1, 2], [1, 1, 1, 1], [2, 2], [2, 1, 1], [1, 1, 1, 1], [1, 1, 2]]
|
75
|
+
w = 1/ k*n
|
76
|
+
のとき、
|
77
|
+
1/[0]×[0][0]、1/[0]×[0][1]、1/[0]×[0][2]、1/[0]×[0][2]
|
78
|
+
#1/[0]×[0][2]を2回計算しているのはdataの1列目にDが2つあるからです。
|
79
|
+
1/[1]×[1][0]、1/[1]×[1][1]、1/[1]×[1][2]、1/[1]×[1][3]
|
80
|
+
1/[2]×[2][0]、1/[2]×[2][0]、1/[2]×[2][1]、1/[2]×[2][1]
|
81
|
+
#1/[1]×[2][0]を2回計算しているのはdataの3列目にCが2つあるからです。
|
82
|
+
#1/[1]×[2][1]を2回計算しているのはdataの3列目にEが2つあるからです。
|
83
|
+
|
68
84
|
|
69
85
|
質問が長くて申し訳ございません。
|
70
86
|
|