8

こんにちは私はそれぞれ1500ポイントの1000データシリーズを持っています。

これらは、np.zeros((1500、1000))を使用して作成され、データで埋められた(1000x1500)サイズのNumpy配列を形成します。

アレイを1600x1100に拡大したい場合はどうすればよいですか?hstackとvstackを使用してアレイを追加する必要がありますか、それともより良い方法がありますか?

基本的に、配列の1000x1500部分にすでにあるデータは変更せず、空白のデータ(ゼロ)のみを右下に追加する必要があります。

ありがとう。

4

4 に答える 4

10

これはあなたが望むことをするはずです(すなわち、OPの2つの配列を表すために3x3配列と4x4配列を使用する)

>>> import numpy as NP
>>> a = NP.random.randint(0, 10, 9).reshape(3, 3)
>>> a
>>> array([[1, 2, 2],
           [7, 0, 7],
           [0, 3, 0]])

>>> b = NP.zeros((4, 4))

aをbにマッピングする:

>>> b[:3,:3] = a

>>> b
    array([[ 1.,  2.,  2.,  0.],
           [ 7.,  0.,  7.,  0.],
           [ 0.,  3.,  0.,  0.],
           [ 0.,  0.,  0.,  0.]])
于 2009-12-16T16:42:54.000 に答える
3

追加された要素にゼロが必要な場合は、機能するmy_array.resize((1600, 1000))はずです。numpy.resize(my_array, (1600, 1000))これは、前の行が複製されているとは異なることに注意してください。これはおそらくあなたが望むものではありません。

それ以外の場合(たとえば、要素をゼロに初期化することを避けたい場合は、不要になる可能性があります)、実際に使用 hstackvstackて、新しい要素を含む配列を追加できます。numpy.concatenate()(pydoc numpy.concatenateを参照)も機能するはずです(私が理解している限り、これはもっと一般的です)。

どちらの場合も、配列を拡張するには新しいメモリブロックを割り当てる必要があり、これらすべてのメソッドにほぼ同じ時間がかかると思います。

于 2009-12-15T21:06:06.100 に答える
2

arr.resize()いずれにせよ、メモリのチャンクの再割り当てに行き詰まるため、、、などnp.concatenateを使用するかどうかは実際には問題ではありませんhstack/vstack。大量のデータを順番に蓄積する場合は、通常、Pythonリストの方が効率的です。

于 2009-12-16T18:06:51.147 に答える
0

正確な要件に応じて、reshape()および/またはresize()を使用する必要があります。

著者からの章と詩が必要な場合は、おそらく、numpyディスカッション掲示板に投稿したほうがよいでしょう。

于 2009-12-15T20:25:50.957 に答える