2017-06-04 21 views
0

可能な限り簡単な方法でループ内のベクトルから行列を作成する方法を知りたいと思います。私は、行列にベクトルを追加したい条件(最初は空でなければならない)を条件として(これは行列の最終的な形状を知らないので)サイクルを持っています。私のような何かをしたいと思います:これは超簡単で、MATLABでループ内で2Dマトリックスを作成する最も簡単な方法

import numpy as np 

for i in range(100): 
    vector=np.random.random(10) 
    condition=np.random.choice([True, False]) 
    if (condition): 
     matrix[i,:]=vector 

(MathWorks社のMATLAB構文のOFCで(書かれた例)完璧に動作します)。しかし、Pythonには、配列とリストを持つ複雑なシステムが(少なくとも私にとって)はるかに多くあります。したがって、誰かがPythonでこれを行う方法を最も単純で正確に知っているなら、例を挙げてください。どうもありがとう!

答えて

0

matrixをpythonリストにして、.append()を使用してvectorを追加することができます。次に、あなたのループコールnp.array(matrix)

import numpy as np 

matrix_as_list = [] 

for i in range(100): 
    vector=np.random.random(10) 
    condition=np.random.choice([True, False]) 
    if (condition): 
     matrix_as_list.append(vector) 

matrix = np.array(matrix_as_list) 

後に私は、Pythonについてはよく分からないんだけど、MATLABで、実際に100行列10行列であるためにあなたの行列を初期化してからではなく、その後、不要な行を削除する方が速いだろうマトリックスをループで成長させるよりも。もちろん、ループを一切使用しないようにソリューションをベクトル化するのが最も速いでしょう。

+0

ありがとう!私は解決策があることを望んでいました。配列を使って作業するだけでした。リストに変換してから戻ってくるわけではありません。 – Capponero

+0

「ループをまったく使用しないようにソリューションをベクトル化する」についてさらに具体的に説明できますか?ありがとう – Capponero

+0

なぜリストを使用しないのですか?私のソリューションは一度だけ変換します。btw – Dan

関連する問題