2017-04-10 63 views
0

我已經搜索了幾個小時現在一種方法來將nparray列表轉換爲列表。 我用函數的輸出是:Python列表nparray列表

[array([[[ 65, 172]], [[ 64, 173]], ... , [[ 65, 173]]]), 
array([[[ 70, 144]], [[ 70, 145]], ... , [[ 71, 144]]]), 
array([[[ 71, 132]] ,[[2, 1]]])] 

當我選擇與列表中的第一項[0],我得到:

[[[ 65 172]] [[64 173]] ... [[65 173]]] 

所以我現在想要的是得到類似的東西,所有的元素都在一個列表中,但不能與昏迷或分號分隔:

[[[ 65 172]] [[64 173]] ... [[ 71 132]] [[2 1]]] 

是否有蟒蛇任何可以轉換nparray我的列表輸出列表我想要得到的,或將列表中的每個項目連接/連接成一個?

非常感謝您的幫助。

+0

你能打印所有陣列的形狀? 'print [x.shape for x in data]''。你能詳細說明你想要什麼樣的輸出形狀嗎? –

+0

@NilsWerner我是新來的python我不知道如何區分數據類型。 (9,1,2),(1,1,2),(14,1,2),(12,1,2),(760,1,2),(12,1,2) ),(632,1,2)]當我使用我得到的輸出形狀。 我可以一起添加列表,但每個項目之間都會發生昏迷:[[[65,172]],[[64,173]],...,[[65,174]],[[65,173] ]。我想要的是沒有昏迷的輸出。 另外,如果我在函數中使用數據[0],我想使用它,但是我只是告訴你它說「不是一個numpy數組,也不是一個標量」。 –

+0

@NilsWerner在這裏你有我想要的輸出的形狀(我從項目數據[0]中得到它):[(1,2),(1,2),...,(1,2)] –

回答

0

您應該忽略輸出中的逗號。它們只是文本輸出,而不是數據的一部分。相反,開始考慮你的陣列形狀。根據你的回答你前面有陣列的列表,每個形狀

[(19, 1, 2), (9, 1, 2), (1, 1, 2), (14, 1, 2), (12, 1, 2), (760, 1, 2), (632, 1, 2)] 

要創建一個大的數組,其中你把尺寸12,只需附上您的陣列沿其軸線0,你可以簡單地使用numpy.concatenate。預期輸出形狀應該是

(x, 1, 2) 

其中x是所有第一維形狀的總和:

import numpy 

# Random data, shapes taken from your answer earlier 
data = [numpy.random.rand(19, 1, 2), numpy.random.rand(9, 1, 2), numpy.random.rand(1, 1, 2), numpy.random.rand(14, 1, 2), numpy.random.rand(12, 1, 2), numpy.random.rand(760, 1, 2), numpy.random.rand(632, 1, 2)] 

# Concatenate along axis 0. All other dimension must be equal in shape! 
out = numpy.concatenate(data, axis=0) 

print out.shape # (1447, 1, 2) 
+0

謝謝你的迴應,它效果很好!我沒有做第一條指令,所以連接不起作用。 –