2017-05-15 119 views
6

我有一個列表說,temp_list具有以下屬性:ValueError異常:無法從形狀(224,224,3)廣播輸入數組形狀(224224)

len(temp_list) = 9260 
temp_list[0].shape = (224,224,3) 

現在,當我轉換成numpy的陣列,

x = np.array(temp_list) 

我收到錯誤:

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

有人可以幫助我在這裏?

+0

我想我們需要使用np.flatten() – Aditya

+0

flatten會扭曲數組的形狀。 – neel

+0

你能顯示你的輸入樣本嗎? – Aditya

回答

11

您的列表中至少有一個項目不是三維的(如第一項),但只有二維:224通過224。這是什麼給你的錯誤。
您需要修復該問題,以便能夠將您的列表變成四(或三)維數組。如果沒有上下文,就不可能說如果你想從3D項目中失去一個維度,或者添加一個2D項目。

下面是錯誤的一個例子:

>>> a = [np.zeros((224,224,3)), np.zeros((224,224,3)), np.zeros((224,224))] 
>>> np.array(a) 

這給

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

是啊,的確@Evert答案是完全正確的。 另外我想補充一個可能會遇到這種錯誤的原因。

>>> np.array([np.zeros((20,200)),np.zeros((20,200)),np.zeros((20,200))]) 

這將是完全正常的,但是,這將導致錯誤:

>>> np.array([np.zeros((20,200)),np.zeros((20,200)),np.zeros((20,201))]) 

ValueError: could not broadcast input array from shape (20,200) into shape (20) 

列表中的numpy的ARRY,也必須是相同的大小。

相關問題