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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

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

Python

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

Q&A

解決済

4回答

670閲覧

[0,0,0,0]が行、列n個ずつの生成の仕方がわかりません。

Fallout_18

総合スコア124

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2018/05/12 14:11

1次元のlistに[0,0,0,0]を入れるときは、for文で繰り返し入れれば解決しますが、2次元にしようとすると、どのようにすれば良いかわかりません。
もしかしたら、行列の事を全く分かっていない質問になってしまうかもしれませんが、よろしくお願い致します。。


欲しい結果は

python

1ex) 2n=4 の場合 3array([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0], 4 [0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0], 5 [0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0], 6 [0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]])

を一般のnに対してどのように書けばよいか教えてほしいです。
手作業で入れればよい、などではないです。
(numpyの場合のarrayを上記に書くのを忘れました)

すいません、何度も言いますが、行列の事をわかっていないのかもしれません。
ただ、numpy行列生成などをネットで調べ、一通り見たのですが、上記の答えに到達できなかったので、質問させていただきました。

ご指導ご鞭撻のほどよろしくお願いします。

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

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

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

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

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

guest

回答4

0

ベストアンサー

タイトルから察するに、

python

1array([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0], 2 [0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0], 3 [0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0], 4 [0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]])

の(16,4)の行列ではなく、

python

1>>> np.zeros((4,4,4)) 2array([[[0., 0., 0., 0.], 3 [0., 0., 0., 0.], 4 [0., 0., 0., 0.], 5 [0., 0., 0., 0.]], 6 7 [[0., 0., 0., 0.], 8 [0., 0., 0., 0.], 9 [0., 0., 0., 0.], 10 [0., 0., 0., 0.]], 11 12 [[0., 0., 0., 0.], 13 [0., 0., 0., 0.], 14 [0., 0., 0., 0.], 15 [0., 0., 0., 0.]], 16 17 [[0., 0., 0., 0.], 18 [0., 0., 0., 0.], 19 [0., 0., 0., 0.], 20 [0., 0., 0., 0.]]])

こっちが欲しいのでは?

追記

python

1>>> import numpy as np 2>>> a = np.zeros((16,4)) 3>>> a 4array([[0., 0., 0., 0.], 5 [0., 0., 0., 0.], 6 [0., 0., 0., 0.], 7 [0., 0., 0., 0.], 8 [0., 0., 0., 0.], 9 [0., 0., 0., 0.], 10 [0., 0., 0., 0.], 11 [0., 0., 0., 0.], 12 [0., 0., 0., 0.], 13 [0., 0., 0., 0.], 14 [0., 0., 0., 0.], 15 [0., 0., 0., 0.], 16 [0., 0., 0., 0.], 17 [0., 0., 0., 0.], 18 [0., 0., 0., 0.], 19 [0., 0., 0., 0.]]) 20>>> a[0,0] # 0行0列の要素 210.0 22>>> a[0] # 0行目 23array([0., 0., 0., 0.]) 24>>> b = np.zeros((4,4,4)) 25>>> b[0,0] # 0行0列の要素 26array([0., 0., 0., 0.]) 27>>> b[0] # 0行目 28array([[0., 0., 0., 0.], 29 [0., 0., 0., 0.], 30 [0., 0., 0., 0.], 31 [0., 0., 0., 0.]]) 32

投稿2018/05/12 21:23

編集2018/05/13 10:39
hayataka2049

総合スコア30933

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

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

Fallout_18

2018/05/13 08:56 編集

横をx軸、縦をy軸として同じ行、列で1要素[0,0,0,0]として表したい!ということです。
hayataka2049

2018/05/13 10:41 編集

追記で具体例を示したので、どっちなのか教えてくださいな。aの(16,4)の方は他の方の回答と同じで、質問文に書いてある奴もこれです。bの(4,4,4)はb[0,0]で[0,0,0,0]としたければこうする必要があるというものです。
Fallout_18

2018/05/13 11:13

すいません、追記のやり方が欲しかったです! 質問を間違えていました!!
Fallout_18

2018/05/13 11:15

bのやり方が欲しかったということです!!
Fallout_18

2018/05/13 11:16

ありがとうございます!
Fallout_18

2018/05/13 11:19

すいません、例えばbの行列でb[2,2]→[1,0,0,0]に変更したい場合はどのようにすれば良いのでしょうか?
hayataka2049

2018/05/13 11:22

まあこれで良いんじゃないですか? >>> b array([[[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.]], [[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.]], [[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.]], [[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.]]]) >>> b[2,2,0] = 1 >>> b array([[[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.]], [[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.]], [[0., 0., 0., 0.], [0., 0., 0., 0.], [1., 0., 0., 0.], [0., 0., 0., 0.]], [[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.]]])
Fallout_18

2018/05/13 11:26

ありがとうございます!!!
Fallout_18

2018/05/13 15:37 編集

何度もすいません。 bの中のリスト自体を交換するプログラムはありますか? 例えば、 b[0,0] →[[1,1,1,1]]・・・などです。 (自分なりやってみたら、エラーがでました。。)
hayataka2049

2018/05/13 15:38

>>> import numpy as np >>> b = np.zeros((4,4,4)) >>> b[2,2] = np.array([1,2,3,4]) >>> b array([[[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.]], [[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.]], [[0., 0., 0., 0.], [0., 0., 0., 0.], [1., 2., 3., 4.], [0., 0., 0., 0.]], [[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.]]])
Fallout_18

2018/05/13 16:05

本当にありがとうございます
guest

0

Python

1n = 4 2matrix = [[0]*n for _ in range(n*n)]

投稿2018/05/12 15:15

umyu

総合スコア5846

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

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

0

NumPyをご利用でしたら、np.zerosで簡単に作れます。

Python

1>>> import numpy as np 2>>> 3>>> arr = np.zeros((4*4, 4), dtype=int) 4>>> arr 5array([[0, 0, 0, 0], 6 [0, 0, 0, 0], 7 [0, 0, 0, 0], 8 [0, 0, 0, 0], 9 [0, 0, 0, 0], 10 [0, 0, 0, 0], 11 [0, 0, 0, 0], 12 [0, 0, 0, 0], 13 [0, 0, 0, 0], 14 [0, 0, 0, 0], 15 [0, 0, 0, 0], 16 [0, 0, 0, 0], 17 [0, 0, 0, 0], 18 [0, 0, 0, 0], 19 [0, 0, 0, 0], 20 [0, 0, 0, 0]])

標準機能で書きたいなら、次のような感じでしょうか。

Python

1>>> arr = [[0 for x in range(4)] for y in range(4*4)] 2>>> arr 3[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

投稿2018/05/12 14:19

LouiS0616

総合スコア35658

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

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

Fallout_18

2018/05/12 14:31

あ、すいません。僕の書き方が悪かったかもしれません。 [array[0,0,0,0],array[0,0,0,0],array[0,0,0,0],array[0,0,0,0], array[0,0,0,0],array[0,0,0,0],array[0,0,0,0],array[0,0,0,0], array[0,0,0,0],array[0,0,0,0],array[0,0,0,0],array[0,0,0,0], array[0,0,0,0],array[0,0,0,0],array[0,0,0,0],array[0,0,0,0]]) と書きたいのですが、上記のやり方でできると解釈してよろしいでしょうか?
Fallout_18

2018/05/12 14:32

最後の)]は外してください
LouiS0616

2018/05/12 14:33

いちおう確認しますが、numpyアレイのリストなのですよね?
Fallout_18

2018/05/12 14:35

あ、ごめんなさい。 頭がこんがらがってしまいました、ちょっと質問を整理してきます。
guest

0

この方法はLouiS0616様の指摘により撤回します。元の回答に打ち消し線を入れました。
詳しくはPython のリストの扱いで注意することを参照してください。

別法です(Ipythonにて実行)。

In [4]: n = 4

In [5]: [[0,0,0,0]] * n
Out[5]: [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

In [6]: [[0 for _ in range(n)]] * n
Out[6]: [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

投稿2018/05/12 14:39

編集2018/05/13 00:00
ikapy

総合スコア1167

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

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

LouiS0616

2018/05/12 14:42

ミュータブルな要素を持つリストを乗算で拡張するのは結構リスキーです。 >>> arr = [[0, 0, 0, 0]] * 4 >>> arr[0][0] = 1 >>> arr [[1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0]]
ikapy

2018/05/12 14:45

そうなんですか。知りませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問