質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

一次元リスト&二次元リストの掛け算とΣの計算方法

chain_01
chain_01

総合スコア29

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

0評価

0クリップ

188閲覧

投稿2022/06/14 22:10

編集2022/06/15 16:26

2つ質問があります。
1つ目は、1次元リストと2次元リストの掛け算ができないです。

行ったこと

python

import collections from collections import Counter from pkgutil import iter_importers from pprint import pprint data = [ ["A", "B", "C", "D", "E", "E"], ["C", "D", "E", "A", "B", "B"], ["D", "C", "E", "A", "A", "D"], ["D", "A", "C", "B", "D", "E"], ] items_each_column = [] for c in zip(*data): items_each_column.append(len(set(c))) print(items_each_column) frequency = [] for z in zip(*data): frequency.append(z) z_list = list(z) nx = list(map(Counter,map(list, zip(*data)))) num = len(nx) num_2 = [] for i in range(num): nj = [] for j in ["A", "B", "C", "D", "E"]: ni = nx[i][j] if ni == 0: continue nj.append(ni) num_2.append(nj) print(num_2) for x in range(len(items_each_column)): for y in range(len(num_2)): w = [1/k * n for (kx, nxi) in zip(items_each_column[x], num_2[x][y])] print(w) #出力結果 #[3, 4, 2, 3, 4, 3] ←print(items_each_column)の出力結果 #[[1, 1, 2], [1, 1, 1, 1], [2, 2], [2, 1, 1], [1, 1, 1, 1], [1, 1, 2]] ←print(num_2)の出力結果 Traceback (most recent call last): File "c:/Users/RRR/MyPython/.py", line 46, in <module> w = [1/k * n for (kx, nxi) in zip(items_each_column[x], num_2[x][y])] TypeError: 'int' object is not iterable

得たい結果
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]]
2つ目:[5/3, 3/2, 4/3, 3/2]

計算ルール
まず、items_each_columnではdataの○列の記号の種類数を列ごとにリストに格納しています。
それが、

python

items_each_column = [] for c in zip(*data): items_each_column.append(len(set(c))) print(items_each_column)

で示しています。
items_each_column = [3, 4, 2, 3, 4, 3]

次に、num_2は列に存在している記号の数を列ごとにリストに入れています。
それが、

python

frequency = [] for z in zip(*data): frequency.append(z) z_list = list(z) nx = list(map(Counter,map(list, zip(*data)))) num = len(nx) num_2 = [] for i in range(num): nj = [] for j in ["A", "B", "C", "D", "E"]: ni = nx[i][j] if ni == 0: continue nj.append(ni) num_2.append(nj) print(num_2)

で示しています。
num_2 = [[1, 1, 2], [1, 1, 1, 1], [2, 2], [2, 1, 1], [1, 1, 1, 1], [1, 1, 2]]

kは変数です。
nは変数です。
wは空のリストです。

そして、
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]に格納します。
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]に格納します。
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]に格納します。
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]に格納します。

#1/items_each_column[0]×num_2[0][2]を2回計算しているのはdataの1列目にDが2つあるからです。
#1/items_each_column[2]×num_2[2][0]を2回計算しているのはdataの3列目にCが2つあるからです。
#1/items_each_column[2]×num_2[2][1]を2回計算しているのはdataの3列目にEが2つあるからです。
#1/items_each_column[3]×num_2[3][0]を2回計算しているのはdataの4列目にAが2つあるからです。
#1/items_each_column[5]×num_2[5][2]を2回計算しているのはdataの6列目にEが2つあるからです。

w[0]~w[3]を各リストごとに計算したら、
[[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]]
となります。

質問が長くて申し訳ございません。

2つ目の質問です。
[[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]]をリストごとに足したいです。
得たい結果
[5/3, 3/2, 4/3, 3/2]
手計算した結果なので分数で書きましたが恐らく割り算した値が出力されると思います。

質問が長くなってしまい申し訳ございません。よろしくお願いいたします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

can110

2022/06/15 00:50

全体的にどのような結果を得たいのかが理解できません。 結果を得るための計算ルール、方法を具体例を示したうえで記載ください。
chain_01

2022/06/15 01:13

言葉足らずで申し訳ございません。 計算ルールについて追加しました。 どうかよろしくお願いいたします。
can110

2022/06/15 01:21

「1/[0]×[0][0]、1/[0]×[0][1]、1/[0]×[0][2]、1/[0]×[0][2]」 この中で[0]や[0][0]などは何を表していますか? またこれら4つの数値がwに入ってほしいということですか? k やnやwというものがどういった意味を持ち、どういった計算ルールでdataから?求めたものなのか? というところから説明をお願いします。
chain_01

2022/06/15 02:48

度々申し訳ございません。k,n,wは私が指定したものだったので書いてることに間違いがありました。誤解を招くような文章弟子。ごめんなさい。訂正しました。 よろしくお願いいたします。
can110

2022/06/15 04:17

num_2がどのようなルールでできており、何を表しているのかが分かりません。 また、num_2[x][y]と記述したとき、w[1]の計算で、yが順に[1,1,0,0,1,1]をとるルール、 「~を~回計算しているのはdataの~列目に~が空つあるからです」という説明とどういった繋がりがあるのか?が理解できません。
chain_01

2022/06/15 04:38

すいません、私の理解不足でnum_2がどのようなルールでできているかをどうやったら詳しく説明できるか分かりません。 num[x][y]のところは、わからなかったのでなんとなく書いてしまったので繋がりを聞かれるとどう説明したらいいか分かりません。 貴重なお時間を割いていただいたのにこのような返答しかできなくて申し訳ございません。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。