2017-04-08 23 views
1

私は90900のnparraysが(299, 299, 3)の形をしたものよりもpythonリストを持っています。私はエラーがnp.asarrayある原因コードの一部が、そこにあると仮定しNumpyはリストをnpの配列に変換できません

ValueError: could not broadcast input array from shape (299,299,3) into shape (299,299)

:私はnumpyの配列しかし

X_trains = np.asarray(X_train).reshape((len(X_train),299,299,3)) 

にこのリストを変換しようとした、これは私にエラーを与えましたそれを修正する方法はありますか?

完全なエラーコード:

ValueErrorTraceback (most recent call last) 
<ipython-input-34-2ba5db77f6b1> in <module>() 
    1 
    2 
----> 3 X_trains = np.asarray(X_train) 

/usr/local/lib/python3.4/dist-packages/numpy/core/numeric.py in asarray(a,   dtype, order) 
529 
530  """ 
--> 531  return array(a, dtype, copy=False, order=order) 
532 
533 

ValueError: could not broadcast input array from shape (299,299,3) into shape (299,299) 
+0

私は4次元配列(これの画像ファイル)としての私のデータを整形したい(画像の数、高さ、長さ、色チャンネル) – Wideem

+0

:ちょうどnp.asarray

X_trains = np.asarray(X_train) 

例仕事をするだろう@ kmario23あなたは正しかった!問題は、グレースケールの画像があることに気づいていないことでした。 – Wideem

+0

あなたが問題を理解して良かった! – kmario23

答えて

1

いいえ、問題はreshape()です。 asarray()関数は、あなたのリストを適切なNumpy配列に変換します。その配列を変更する必要はありません。ここで

は例です:あなたがnumpyの配列に変換した後、まだ配列を再構築したい場合は

In [1]: a = [[1, 2], [4, 5]] 

In [2]: import numpy as np 

In [3]: np.asarray(a) 
Out[3]: 
array([[1, 2], 
     [4, 5]]) 

、新しい形状は、新しいものに古い配列を放送するために十分適切でなければなりません。

あなたは、形状を取得し、それがあなたの予想1に変換可能だかどうかを確認することができます

X_trains = np.asarray(X_train) 
old_shape = X_trains.shape 
+0

この問題は明らかに 'np.asarray'にありますが、完全なエラーコードが含まれていますので、もっと意味があると思います。 – Wideem

+0

@Wideemこの回答はあなたのリストにも同様の形のリストが含まれているためです。しかし、エラーが 'asarray'のためにある場合、これはあなたのサブリストに不一致があることを意味します。 – Kasramvd

0

私はあなたの問題を理解しています。それを再形成する必要はありません。

In [18]: arr_3d 
Out[18]: 
array([[[ 0, 1, 2], 
     [ 3, 4, 5], 
     [ 6, 7, 8]], 

     [[ 9, 10, 11], 
     [12, 13, 14], 
     [15, 16, 17]]]) 


In [19]: list_of_arr = [arr_3d, arr_3d] 

In [20]: arr_4d = np.asarray(list_of_arr) 

In [21]: arr_4d.shape 
Out[21]: (2, 2, 3, 3) 
関連する問題