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

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

ただいまの
回答率

88.92%

for文で得た結果を二次元配列にしたい

解決済

回答 3

投稿

  • 評価
  • クリップ 1
  • VIEW 156

ttt_

score 5

for文で出力される結果を二次元配列にしたい

[[100, 200, 300], [400, 500, 600], [700, 800, 900]]

Pythonです。
for文で上記のような二次元配列を作ろうとしていますが、リストとして出力され上手くいきません。
どうすればよいのでしょうか。

def create(I, J):
    result = []
    for i in range(I):
        for j in range(J):
            w = Xav + 5 * sigma[0] * ((vec[0] * (i - 1/2)/ I) + (vec[1] * (j - 1/2)/J))
            print(w)
            result.append(w)
    return(result)

以下が用いた変数になります。
I = 12
J = 18

Xav
array([1.93820225e+00, 1.30006180e+01, 2.33634831e+00, 2.36651685e+00,
       1.94949438e+01, 9.97415730e+01, 2.29511236e+00, 2.02926966e+00,
       3.61853933e-01, 1.59089888e+00, 5.05808988e+00, 9.57449438e-01,
       2.61168539e+00, 7.46893258e+02])


sigma
array([2.35285955, 1.58021399])


vec
array([[ 0.39366953, -0.13632501,  0.22267638, -0.00225793,  0.22429849,
        -0.12463016, -0.35926404, -0.39071171,  0.2670012 , -0.2790625 ,
         0.08931829, -0.27682265, -0.35052618, -0.26951525],
       [-0.00569041, -0.48416087, -0.22359095, -0.31585588,  0.01161574,
        -0.30055143, -0.06711983,  0.00131345, -0.0269887 , -0.04122256,
        -0.52978274,  0.27790735,  0.16277625, -0.36605886]])
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

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

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

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

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

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

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

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

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+1

プログラムが動作しませんが、
w は int か float を想定していますよね?

すると、result.append(w) で result に要素を追加し続けても
1次元配列にしかなりません

2次元配列を作成するためには、
list 型に対して list 型の要素を追加する必要があります

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/07/14 23:11

    解決しました。
    迅速に回答してくださり、ありがとうございます。

    キャンセル

+1

こういうことですか?
「リストのリスト」もリストですが……

def create(I, J):
    result = []
    for i in range(I):
        result_sub = []
        for j in range(J):
            w = Xav + 5 * sigma[0] * ((vec[0] * (i - 1/2)/ I) + (vec[1] * (j - 1/2)/J))
            print(w)
            result_sub.append(w)
        result.append(result_sub)
    return(result)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

これでどうでしょうか?

x = list(map(lambda x: x*100, range(1,10)))
y = [x[i:i+3] for i in range(0, len(x), 3)]
print(y)

出力
[[100, 200, 300], [400, 500, 600], [700, 800, 900]]

参考

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 88.92%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

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