[问题] 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