作者dosiris (希望大家开心)
看板Python
标题[问题] Numpy的flatten方法结果似乎有错怎麽解?
时间Tue Apr 25 07:21:31 2023
小弟在处理一个很简单的问题时,需要将 [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://webptt.com/cn.aspx?n=bbs/Python/M.1682378493.A.BAC.html
※ 编辑: dosiris (111.250.78.225 台湾), 04/25/2023 07:22:56
1F:→ klamathu: 好奇这个[1, 2, [3, 4]]的Dimension是 04/25 07:36
2F:→ dosiris: numpy回应shape是 (3,) 04/25 07:46
3F:推 klamathu: itertools.chain()有符合大大的需求吗? 04/25 07:59
一样出现 TypeError: 'int' object is not iterable
4F:→ lycantrope: ...因为numpy直接把它存成object 04/25 09:06
5F:→ lycantrope: 应该有跳warning吧.. 04/25 09:06
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
7F:→ lycantrope: 你可以看一下np.array([1,2,[3,4]])的dtype 04/25 09:48
8F:→ dosiris: 谢谢分享! 看来只能自订指令解决了。学到一课 04/25 11:14
9F:推 a78998042a: import more_itertools; nested_list=[1, 2, [3, 4]] 04/25 17:52
10F:→ a78998042a: result=list(more_itertools.collapse(nested_list)) 04/25 17:52
11F:→ dosiris: 谢谢楼上!原来还有这招,学到了! 04/25 20:07