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

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

ただいまの
回答率

90.86%

  • Python

    5887questions

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

  • Python 3.x

    4411questions

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

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

解決済

回答 4

投稿

  • 評価
  • クリップ 0
  • VIEW 159

jackson5

score 25

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


欲しい結果は

ex)
n=4 の場合
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]])


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

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

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

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 4

checkベストアンサー

+2

タイトルから察するに、

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]])

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

>>> np.zeros((4,4,4))
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.]]])

こっちが欲しいのでは?

 追記

>>> import numpy as np
>>> a = np.zeros((16,4))
>>> a
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.]])
>>> a[0,0]  # 0行0列の要素
0.0
>>> a[0]  # 0行目
array([0., 0., 0., 0.])
>>> b = np.zeros((4,4,4))
>>> b[0,0]  # 0行0列の要素
array([0., 0., 0., 0.])
>>> b[0]  # 0行目
array([[0., 0., 0., 0.],
       [0., 0., 0., 0.],
       [0., 0., 0., 0.],
       [0., 0., 0., 0.]])

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/05/13 17:56 編集

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

    キャンセル

  • 2018/05/13 19:41 編集

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

    キャンセル

  • 2018/05/13 20:13

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

    キャンセル

  • 2018/05/13 20:15

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

    キャンセル

  • 2018/05/13 20:16

    ありがとうございます!

    キャンセル

  • 2018/05/13 20:19

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

    キャンセル

  • 2018/05/13 20: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.]]])

    キャンセル

  • 2018/05/13 20:26

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

    キャンセル

  • 2018/05/14 00:37 編集

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

    キャンセル

  • 2018/05/14 00: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.]]])

    キャンセル

  • 2018/05/14 01:05

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

    キャンセル

+1

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

>>> import numpy as np
>>>
>>> arr = np.zeros((4*4, 4), dtype=int)
>>> arr
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]])

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

>>> arr = [[0 for x in range(4)] for y in range(4*4)]
>>> arr
[[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 23: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]])
    と書きたいのですが、上記のやり方でできると解釈してよろしいでしょうか?

    キャンセル

  • 2018/05/12 23:32

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

    キャンセル

  • 2018/05/12 23:33

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

    キャンセル

  • 2018/05/12 23:35

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

    キャンセル

+1

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

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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 23: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]]

    キャンセル

  • 2018/05/12 23:45

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

    キャンセル

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

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

関連した質問

  • 解決済

    ソート結果が正しくない

    前提・実現したいこと csvファイルdata1.csvおよびそれと同じフォーマットのcsvファイルdata2.csv, csvファイルdata3.csvのそれぞれに対して,温度(

  • 受付中

    関数の実装、matmulを利用

    追記:print(np.matmul(A, x)) まではできたのですが、それ以降はどのように書けば良いでしょうか?

  • 解決済

    遺伝的アルゴリズムによる特徴選択について

    pythonによる遺伝的アルゴリズムの実装 遺伝的アルゴリズムを使った特徴選択をpythonで実装しようとしているのですが、わからないことがあります。 例えば以下のようなnumoy

  • 解決済

    pythonによる2進数から10進数への変換

    pythonで、2進数を10進数に変換する方法がわかりません。 具体的には以下のnumpy配列を10進数に変換したいと考えています。 import numpy as np

  • 解決済

    pythonで文字列と数値を同時にappendしたい(数値はfloatのまま)

    python3系です 文字列と数値が要素になっているリストをappendしようとすると 数値まで文字列になってしまいます 以下にコードを示します コード中のiとrec_su

  • 解決済

    pythonのlist文について

    pythonのプログラムです。 listA[8,4,2] listB[5,2,3] この掛け算の合計を求めたいのですが print sum(listA*listB) でやるとエラー

  • 解決済

    pythonのスライスについて

    a = b[:,0] このようなコードがあったとき、どのようなことがおこなわれますか? bはこのコードがなりたつ何かだとすると なにだったら成り立ちますか? すみません、間

  • 解決済

    Python,numpyについてです

    a = np.ones((20, 2)) * 10 以上の様に配列が作られ、それに対して、以下の様にshapeを表示します。 print(a.shape) すると実行結果は(2

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

  • Python

    5887questions

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

  • Python 3.x

    4411questions

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