質問: 100*100行列で 1列目が1から100まで 2列目が2から101まで 100列目が101から200まで この行列を作りたいのです。 array=numpy.array(range(1,100)) for i in range(100) array.i=array+i print(array.i) この後どうやって100行100列の行列を作るか分かりません。 教えてください!
回答: 質問の定義だと100列目は100~199の数列になりますが、そのテイで回答します。 numpyには`reshape`というメソッドがあります。配列を指定の形状に変換します。 下記の例は、要素数8の配列を2行4列の行列に変換しています。 個々のデータは1行目から順に整列していることがわかります。 ``` import numpy as np l = np.array([1,2,3,4,5,6,7,8]) l2 = l.reshape(2,4) print(l2) #--> [[1 2 3 4] [5 6 7 8]] ``` では質問の100行100列の行列を考えてみます。 1行目が1,2, ... ,99,100 2行目が2,3, ... ,100,101 というように数値が並ぶとすると、以下のような配列 `[1, 2, ..., 99, 100, 2, 3, ... , 100, 101]` を`reshape`で2行100列の行列に変換すると、 ``` [[1 2 ... 99 100] [2 3 ... 100 101]] ``` という行列に変換できます。 また、変換元の配列は1次元配列でなくても良いです。 `[[1, 2, ..., 99, 100],[2, 3, ... , 100, 101]]`という2次元配列を同様にreshapeで変換しても同じ結果を得ることができます。 この要領で、100行分の配列を`np.arange()`(`range()`でも良い)で作成し、何らかの配列に`append`していき、最後に`np.array`に変換してから100行100列で`reshape`すれば目的の行列を生成できます。 ※なお、お分かりだとは思いますが 1行目が1,2, ... ,99,100 2行目が2,3, ... ,100,101 : 100行目が100,101, ... ,198,199 の行列と 1列目が1,2, ... ,99,100 2列目が2,3, ... ,100,101 : 100列目が100,101, ... ,198,199 の行列は同値です。