如何轉換這樣的:壓扁變長數組列表
[2, 4, array([ 3.]), array([ 4.]), array([ 5., 4.])]
到
[2,4,3,4,5,4]
我試圖尋找,但該解決方案
[array([ 2.]), array([ 4.]), array([ 3.]), array([ 4.]), array([ 5., 4.])]
和
工作[[2],[4],[3],[4],[5,4]]
如何轉換這樣的:壓扁變長數組列表
[2, 4, array([ 3.]), array([ 4.]), array([ 5., 4.])]
到
[2,4,3,4,5,4]
我試圖尋找,但該解決方案
[array([ 2.]), array([ 4.]), array([ 3.]), array([ 4.]), array([ 5., 4.])]
和
工作[[2],[4],[3],[4],[5,4]]
import itertools
a = [2, 4, array([ 3.]), array([ 4.]), array([ 5., 4.])]
list(itertools.chain.from_iterable(asarray(b).ravel() for b in a))
我喜歡用sum來展平東西。在你的情況下,你首先需要將數組轉換爲列表,並將數字轉換爲數字列表。因此,如果陣列在:
sum((list(x) if hasattr(x, '__iter__') else [x] for x in a), [])
如果你有很多元素需要處理,這將會非常緩慢。在總結中的每一步中,都會分配一個新列表,其中包含迄今爲止所看到的所有元素。最終結果是元素數量最差的O(n ** 2)時間。 –
不成熟的優化。如果長名單上的表現是需要的話,他會這樣說的。與解決方案相比,我的解決方案更通用,更易於閱讀並維護。儘管如果存在很多元素的可能性,你的確會更好。 – Gurgeh
你有什麼試過? >>> [2,4,array([3。])] Traceback(最近一次調用的最後一個): 文件「」,第1行,在 NameError:name'array'未定義 –
@JohnMee也許'numpy.array'。 – iMom0
@ iMom0嗯,給出[的重複?](http://stackoverflow.com/questions/13745090/python-list-to-array)你可能是對的。仍然敲擊他的鼓,但是......你想幫助他嗎? –