猿问

用python压平numpy数组

这是重现我的问题的示例:


a = np.array([[1,2], [3,4], [6,7]])

b = np.array([[1,2], [3,4], [6,7,8]])

c = np.array([[1,2], [3,4], [6]])

print(a.flatten())

print(b.flatten())

print(c.flatten())

当其中一个数组的项目少或多时,就会出现问题。


Output:

[1 2 3 4 6 7]

[list([1, 2]) list([3, 4]) list([6, 7, 8])] # Won't work

[list([1, 2]) list([3, 4]) list([6])]       # Also won't work


How I want it:

[1 2 3 4 6 7]

[1 2 3 4 6 7 8]

[1 2 3 4 6]

有谁知道如何正确地展平列表,例如 b 和 c?


墨色风雨
浏览 570回答 2
2回答

吃鸡游戏

使用 concatenatenp.concatenate(b)Out[204]: array([1, 2, 3, 4, 6, 7, 8])np.concatenate(c)Out[205]: array([1, 2, 3, 4, 6])

尚方宝剑之说

你需要:from itertools import chaina = np.array([[1,2], [3,4], [6,7]])b = np.array([[1,2], [3,4], [6,7,8]])c = np.array([[1,2], [3,4], [6]])print(a.flatten())print(list(chain(*b)))print(list(chain(*c)))输出:[1 2 3 4 6 7][1 2 3 4 6 7 8][1 2 3 4 6]
随时随地看视频慕课网APP

相关分类

Python
我要回答