2

X 個の 2 次元要素を持つ配列を初期化したい。たとえば、X = 3 の場合、[[0,0]、[0,0]、[0,0]] とします。[0]*3 で [0, 0, 0] が得られることはわかっていますが、2 次元要素に対してこれを行うにはどうすればよいでしょうか。

4

4 に答える 4

6

これを試して:

m = [[0] * 2 for _ in xrange(3)]

上記のコードでは3、 を行列の行数、 を列数と考え2てください。要素の0初期化に使用する値です。これに注意してください: Python 3 を使用している場合は、range代わりにxrange.

より一般的な解決策として、次の関数を使用します。

def create_matrix(m, n, initial=0):
    return [[initial] * n for _ in xrange(m)]

質問の特定のケースについて:

m = create_matrix(3, 2)
print m
> [[0, 0], [0, 0], [0, 0]]

または、 を使用しても構わない場合は、Mellkor の回答に示されているように関数をnumpy使用できます。numpy.zeros()

于 2012-04-11T04:03:28.027 に答える
3

numpy.zerosはそのような場合に役立つと思います。言う、

x=4

numpy.zeros((x,x))

あなたに与える:

array([[ 0., 0., 0., 0.], [ 0., 0., 0., 0.], [ 0., 0., 0., 0.], [ 0., 0 ., 0., 0.]])

于 2012-04-11T04:22:35.130 に答える
0

コンストラクトの使用

[[0,0]]*3

正常に動作し、次を返します。

[[0, 0], [0, 0], [0, 0]]

于 2012-04-11T06:45:05.827 に答える
0

私はそれだと信じています[[0,0],]*3

于 2012-04-11T04:02:53.400 に答える