web-dev-qa-db-ja.com

numpy配列を切り捨てる方法は?

次のコード行を使用して、「データ」(サイズ112943)を形状(1,15000)に切り捨てようとしています。

data = np.reshape(data, (1, 15000))

ただし、次のエラーが発生します。

ValueError: cannot reshape array of size 112943 into shape (1,15000)

このエラーを修正する方法について何か提案はありますか?

4
codemonkey

つまり、最初の15K要素のみが必要なので、これには基本的なスライスを使用できます。

In [114]: arr = np.random.randn(112943)

In [115]: truncated_arr = arr[:15000]

In [116]: truncated_arr.shape
Out[116]: (15000,)

In [117]: truncated_arr = truncated_arr[None, :]

In [118]: truncated_arr.shape
Out[118]: (1, 15000)
8
kmario23

resizeを使用できます:

>>> import numpy as np
>>> 
>>> a = np.arange(17)
>>> 
# copy
>>> np.resize(a, (3,3))
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>> 
# in-place - only use if you know what you are doing
>>> a.resize((3, 3), refcheck=False)
>>> a
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

注意してください-インタラクティブシェルが最近評価されたものへのいくつかの追加の参照を保持しているので、私は危険なインプレースバージョンにrefcheck=Falseを使用しなければならなかったと思います。スクリプトまたはモジュールでは、そうする必要はなく、そうすべきではありません。

2
Paul Panzer