回答編集履歴

4

文言変更

2022/06/15 04:14

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -1,4 +1,4 @@
1
- どの文字が何個あったのかCounter辞書を使処理にしてはいかがですか
1
+ シンプルにCounter辞書を使った処理にしてはいかがでしょう
2
2
 
3
3
  ```python
4
4
  from collections import Counter

3

内包表記を使わないように変更

2022/06/15 03:40

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -15,7 +15,10 @@
15
15
 
16
16
  w = []
17
17
  for row in data:
18
+ f = []
19
+ for item, freq in zip(row, frequency):
18
- w.append([1 / len(freq) / freq[item] for item, freq in zip(row, frequency)])
20
+ f.append(1 / len(freq) / freq[item])
21
+ w.append(f)
19
22
  print('w:', w)
20
23
 
21
24
  s = list(map(sum, w))

2

内包表記をlistとmapに変更

2022/06/15 03:26

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -1,10 +1,7 @@
1
1
  どの文字が何個あったのかCounter辞書を使う処理にしてはいかがですか?
2
2
 
3
3
  ```python
4
- import collections
5
4
  from collections import Counter
6
- from pkgutil import iter_importers
7
- from pprint import pprint
8
5
 
9
6
  data = [
10
7
  ["A", "B", "C", "D", "E", "E"],
@@ -13,7 +10,7 @@
13
10
  ["D", "A", "C", "B", "D", "E"],
14
11
  ]
15
12
 
16
- frequency = [Counter(column) for column in zip(*data)]
13
+ frequency = list(map(Counter, zip(*data)))
17
14
  print('frequency:', frequency)
18
15
 
19
16
  w = []

1

実行結果追記

2022/06/15 03:22

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -24,4 +24,11 @@
24
24
  s = list(map(sum, w))
25
25
  print('s:', s)
26
26
  ```
27
+ 実行結果
27
28
 
29
+ ```
30
+ frequency: [Counter({'D': 2, 'A': 1, 'C': 1}), Counter({'B': 1, 'D': 1, 'C': 1, 'A': 1}), Counter({'C': 2, 'E': 2}), Counter({'A': 2, 'D': 1, 'B': 1}), Counter({'E': 1, 'B': 1, 'A': 1, 'D': 1}), Counter({'E': 2, 'B': 1, 'D': 1})]
31
+ w: [[0.3333333333333333, 0.25, 0.25, 0.3333333333333333, 0.25, 0.16666666666666666], [0.3333333333333333, 0.25, 0.25, 0.16666666666666666, 0.25, 0.3333333333333333], [0.16666666666666666, 0.25, 0.25, 0.16666666666666666, 0.25, 0.3333333333333333], [0.16666666666666666, 0.25, 0.25, 0.3333333333333333, 0.25, 0.16666666666666666]]
32
+ s: [1.5833333333333333, 1.5833333333333333, 1.4166666666666665, 1.4166666666666667]
33
+ ```
34
+