1. ホーム
  2. python

[解決済み] numpyの配列を初期化する

2022-04-26 09:14:13

質問

ある形状のnumpy配列を初期化し、それに追加する方法はありますか?リストの例で説明します。ループで生成されるオブジェクトのリストを作りたい場合、私はそれを行うことができます。

a = []
for i in range(5):
    a.append(i)

numpyの配列で同じようなことをしたいのですが。私はvstackやconcatenateなどについて知っています。しかし、これらは入力として2つのnumpy配列を必要とするようです。私が必要とするものは、次のとおりです。

big_array # Initially empty. This is where I don't know what to specify
for i in range(5):
    array i of shape = (2,4) created.
    add to big_array

big_array は形状を持つ必要があります (10,4) . どうすればいいのでしょうか?


EDITです。

以下の説明を付け加えたいと思います。私は big_array = numpy.zeros((10,4)) を作成し、それを埋める。ただし、この場合、あらかじめbig_arrayのサイズを指定する必要があります。この場合、サイズはわかっていますが、わからない場合はどうすればいいのでしょうか?を使う場合 .append 関数でリストを拡張する場合、その最終的なサイズを事前に知る必要はありません。空の配列から始めて、より小さな配列からより大きな配列を作成するために、同じようなものが存在しないかと考えています。

どのように解決するのですか?

<ブロッククオート

numpy.zeros

指定された形と をゼロで埋めたものである。

または

numpy.ones

指定された形と タイプで、1 で埋め尽くされる。

または

numpy.empty

指定された形と 型であり、エントリを初期化しない。


しかし、リストに要素を追加して配列を構築する考え方は、効率が悪いので、numpyではあまり使われません(numpyのデータ型は、基盤となるCの配列にずっと近いのです)。その代わりに、必要な大きさの配列をあらかじめ確保し、それから行を埋めていくようにします。そのためには numpy.append どうしても必要なら、ですが。