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

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

新規登録して質問してみよう
ただいま回答率
85.35%
多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Python

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

3回答

1652閲覧

[python]多次元配列にランダムに値を代入したい

mona_beginner

総合スコア33

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Python

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2022/01/11 06:29

前提・実現したいこと

多次元配列に列ごとに範囲が異なる乱数を代入したいのですがうまくいかず、ご教授願います。

理想は5×5でこんな感じです
C={{30,0,1,36,87},{45,1,0,23,80},{・・・},{・・・},{・・・}}

該当のソースコード

python

1import random 2 3#顧客データのランダム生成 4def make_cliant(zupper): 5 random.seed(5) 6 age= [random.randint(20,100) ] 7 child=[random.randint(0,1) ] 8 mary=[random.randint(0,1) ] 9 X=[random.randint(0,zupper)] 10 Y=[random.randint(0,zupper)] 11 return[age,child,mary,X,Y] 12 13 14#-------------------------------------------------------------------------- 15n=5 16zupper=80 17 18C=[] 19for _ in range(n): 20 C.append(make_cliant(zupper)) 21 22for o in C: 23 print(C)

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

numpy を使うやりかたもあることを覚えておいてください。

python

1import numpy as np 2from pprint inport pprint 3zupper = 80 4 5A = np.concatenate([np.random.randint(20, 100, (5,1)), np.random.randint(0, 1, (5,2)), np.random.randint(0, zupper + 1, (5,2))], axis=1) 6 7print(A) 8C = A.tolist() 9pprint(C)

実行結果

python

1>>> print(A) 2[[40 0 0 68 42] 3 [27 0 0 0 70] 4 [32 0 0 80 50] 5 [29 0 0 25 44] 6 [89 0 0 26 79]] 7>>> C = A.tolist() 8>>> pprint(C) 9[[40, 0, 0, 68, 42], 10 [27, 0, 0, 0, 70], 11 [32, 0, 0, 80, 50], 12 [29, 0, 0, 25, 44], 13 [89, 0, 0, 26, 79]]

参考
NumPy, randomで様々な種類の乱数の配列を生成
NumPy配列ndarrayを結合(concatenate, stack, blockなど)

投稿2022/01/11 07:11

ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

python

1import random 2import time 3 4def make_client(n, zupper): 5 random.seed(time.time()) 6 return [[random.randint(*i) 7 for i in ((20, 100), (0, 1), (0, 1), (0, zupper), (0, zupper))] 8 for _ in range(n)] 9 10n=5 11zupper=80 12 13C = make_client(n, zupper) 14 15from pprint import pprint 16pprint(C) 17 18# 19[[99, 1, 1, 67, 3], 20 [79, 0, 0, 20, 14], 21 [67, 1, 0, 48, 69], 22 [33, 0, 0, 27, 52], 23 [55, 0, 1, 20, 9]]

投稿2022/01/11 06:42

編集2022/01/11 06:57
melian

総合スコア20655

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

  • random.seedは毎回ではなく1回だけ呼ぶ
  • age=[~]の[]は不要
  • 最後のprintはCではなくoにする、あるいは単にprint(C)のみでもよい。

Python

1import random 2 3#顧客データのランダム生成 4def make_cliant(zupper): 5 age= random.randint(20,100) 6 child=random.randint(0,1) 7 mary=random.randint(0,1) 8 X=random.randint(0,zupper) 9 Y=random.randint(0,zupper) 10 return[age,child,mary,X,Y] 11 12#-------------------------------------------------------------------------- 13n=5 14zupper=80 15 16random.seed(5) 17C=[] 18for _ in range(n): 19 C.append(make_cliant(zupper)) 20 21for o in C: 22 print(o) 23 24#[99, 1, 1, 67, 3] 25#[79, 0, 0, 20, 14] 26#[67, 1, 0, 48, 69] 27#[33, 0, 0, 27, 52] 28#[55, 0, 1, 20, 9]

投稿2022/01/11 06:37

can110

総合スコア38341

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問