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

看板Python作者 (希望大家開心)時間1年前 (2023/04/25 07:21), 1年前編輯推噓2(209)
留言11則, 4人參與, 1年前最新討論串1/1
小弟在處理一個很簡單的問題時,需要將 [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擲回想要的結果嗎? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.250.78.225 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1682378493.A.BAC.html ※ 編輯: dosiris (111.250.78.225 臺灣), 04/25/2023 07:22:56

04/25 07:36, 1年前 , 1F
好奇這個[1, 2, [3, 4]]的Dimension是
04/25 07:36, 1F

04/25 07:46, 1年前 , 2F
numpy回應shape是 (3,)
04/25 07:46, 2F

04/25 07:59, 1年前 , 3F
itertools.chain()有符合大大的需求嗎?
04/25 07:59, 3F
一樣出現 TypeError: 'int' object is not iterable

04/25 09:06, 1年前 , 4F
...因為numpy直接把它存成object
04/25 09:06, 4F

04/25 09:06, 1年前 , 5F
應該有跳warning吧..
04/25 09:06, 5F
list(np.array([1,2,[3,4]]).flatten()) 沒跳出warning 但丟回的結果就是原樣 Out[31]: [1, 2, [3, 4]] ※ 編輯: dosiris (111.250.78.225 臺灣), 04/25/2023 09:26:49

04/25 09:45, 1年前 , 6F

04/25 09:48, 1年前 , 7F
你可以看一下np.array([1,2,[3,4]])的dtype
04/25 09:48, 7F

04/25 11:14, 1年前 , 8F
謝謝分享! 看來只能自訂指令解決了。學到一課
04/25 11:14, 8F

04/25 17:52, 1年前 , 9F
import more_itertools; nested_list=[1, 2, [3, 4]]
04/25 17:52, 9F

04/25 17:52, 1年前 , 10F
result=list(more_itertools.collapse(nested_list))
04/25 17:52, 10F

04/25 20:07, 1年前 , 11F
謝謝樓上!原來還有這招,學到了!
04/25 20:07, 11F
文章代碼(AID): #1aHmxzki (Python)