2017-06-03 17 views
-2

numpy.resize(array、new_size)についていくつかの質問がありましたが、何もしていません。今、私はx_array.shape ==(1456,26)とx_array.shape ==(1456,1)を持っています。彼らの形を同じにする方法が必要です。私はnp.resize(x_array、y_array.shape)を試みましたが、何もしていません(エラーも変更もありません)。そのような形を変えることさえ可能ですか?どちらもnumpy.ndarray型です。ありがとうございました。numpy.ndarraysのサイズを変更できません

+0

私はあなたが '再形 'を探していると思う。 – ForceBru

+0

reshapeは私にこのエラーを与えます: "ValueError:サイズ1456の配列をシェイプ(1456,26)に変形できません" – Derek

+0

どうして形状を等しくしたいのですか?操作で使用するには?そうであれば、それらは軸の1つに一致するので、これは簡単に行うことができます。データを追加せずに(1456,1)から(1456,26)に変更することはできません。ただし、追加の軸を追加して作業することができます。 – ayhan

答えて

1

np.resizeドキュメント指定された形状の新しい配列を返します。なので、x_arrayは残ります(1456,26)。

x_array = np.ones([1456, 26]) 
print x_array 

y_array = np.ones([1456, 1]) 
print y_array 

new_array = np.resize(x_array, y_array.shape) 
print new_array 

は、サイズ変更された配列を新しい配列に割り当てる必要があります。

0

それは(例えば、this answerを参照してください)numpy.resizeでnumpyの配列のサイズを変更することは技術的には可能ですが、それはndarrayの形状を変形するのと同じ目標を達成するために、強力なnumpy array indexingを使用するために、通常ははるかに便利です。

あなたの問題は

I need a way to make their shapes equal,

であれば、2つの解決策があります

  • あなたがy_arrayを拡張したいです。ただそれにy_arrayの要素を新しい配列y_extを作成し、コピーすることを行うには:

    y_ext = numpy.zeros((1456,26)) # y_ext.shape == (1456,26) 
    y_ext[:,0] = y_array[:,0] 
    
  • をあなたはx_arrayをトリミングします。それも簡単です:

    x_trimmed = x_array[:,0]  # x_trimmed.shape == (1456,) 
    y_trimmed = y_array[:,0]  # y_trimmed.shape == (1456,) 
    

注後者の場合にはx_trimmed形状は(1456,)、ない(1456,1)であること。だからy_arrayも「トリミング」されている(1次元配列になる)のであるから、x_trimmedy_trimmedの形状が真に等しくなる。

関連する問題