[問題] Numpy的flatten方法結果似乎有錯怎麼解?

作者: dosiris (希望大家開心)   2023-04-25 07:21:31
小弟在處理一個很簡單的問題時,需要將 [1,2,[3,4]] 這樣的資料串列flatten為 [1,2,3,4]。
結果發現numpy的flatten方法並沒有辦法給出想要的結果:
list(np.array([1,2,[3,4]]).flatten())
我也嘗試的其他諸如 sum(list物件, []) 和 functools.reduce(operator.iconcat, list物件, [])
結果更糟,直接丟錯誤訊息說無法處理單一數字。
TypeError: 'int' object is not iterable
之所以會認為flatten就應該丟回 [1,2,3,4] 的結果是因為Mathematica就能正確處理:
Flatten[{1, 2, {3, 4}}]
Out[1]= {1, 2, 3, 4}
胃口被養壞了 XD
不知道還有什麼比較方便的方法可以讓numpy的flatten擲回想要的結果嗎? 謝謝!
作者: klamathu (Klamathu)   2023-04-25 07:36:00
好奇這個[1, 2, [3, 4]]的Dimension是
作者: dosiris (希望大家開心)   2023-04-25 07:46:00
numpy回應shape是 (3,)
作者: klamathu (Klamathu)   2023-04-25 07:59:00
itertools.chain()有符合大大的需求嗎?
作者: lycantrope (阿寬)   2023-04-25 09:06:00
...因為numpy直接把它存成object應該有跳warning吧..https://pastebin.com/pPd5Fsus你可以看一下np.array([1,2,[3,4]])的dtype
作者: dosiris (希望大家開心)   2023-04-25 11:14:00
謝謝分享! 看來只能自訂指令解決了。學到一課
作者: a78998042a (Benjimine)   2023-04-25 17:52:00
import more_itertools; nested_list=[1, 2, [3, 4]]result=list(more_itertools.collapse(nested_list))
作者: dosiris (希望大家開心)   2023-04-25 20:07:00
謝謝樓上!原來還有這招,學到了!

Links booklink

Contact Us: admin [ a t ] ucptt.com