for循环中的垂直堆栈numpy数组
vertical stack numpy array in for loop
我有一个列表(region_props_list),大小 = 37,它具有如下所示的 2D numpy 数组的值。
(因此,region_props_list[0] 是一个 numpy 数组。)
我想把所有的数据垂直堆叠起来,做成一个新的pandas DataFrame,它的形状是($$, 7)
如何使用 for 循环垂直堆叠数据?有人可以给我建议吗?
您不需要 for 循环。您可以使用 np.vstack
代替:
import numpy as np
lst = [np.array([[1, 2], [3, 4]]), np.array([[5, 6]]), np.array([[7, 8], [9, 10]])]
a = np.vstack(lst)
print(a)
# [[ 1 2]
# [ 3 4]
# [ 5 6]
# [ 7 8]
# [ 9 10]]
如果您的目标是构建数据框,那么您可以将 itertools.chain
与 pd.DataFrame.from_records
结合使用(甚至无需制作 v-stacked 数组):
import numpy as np
import pandas as pd
import itertools
lst = [np.array([[1, 2], [3, 4]]), np.array([[5, 6]]), np.array([[7, 8], [9, 10]])]
df = pd.DataFrame.from_records(itertools.chain.from_iterable(lst))
print(df)
# 0 1
# 0 1 2
# 1 3 4
# 2 5 6
# 3 7 8
# 4 9 10
P.S。请不要post截图。制作一个人们可以轻松处理的可复制和粘贴的最小示例。
我有一个列表(region_props_list),大小 = 37,它具有如下所示的 2D numpy 数组的值。 (因此,region_props_list[0] 是一个 numpy 数组。)
我想把所有的数据垂直堆叠起来,做成一个新的pandas DataFrame,它的形状是($$, 7)
如何使用 for 循环垂直堆叠数据?有人可以给我建议吗?
您不需要 for 循环。您可以使用 np.vstack
代替:
import numpy as np
lst = [np.array([[1, 2], [3, 4]]), np.array([[5, 6]]), np.array([[7, 8], [9, 10]])]
a = np.vstack(lst)
print(a)
# [[ 1 2]
# [ 3 4]
# [ 5 6]
# [ 7 8]
# [ 9 10]]
如果您的目标是构建数据框,那么您可以将 itertools.chain
与 pd.DataFrame.from_records
结合使用(甚至无需制作 v-stacked 数组):
import numpy as np
import pandas as pd
import itertools
lst = [np.array([[1, 2], [3, 4]]), np.array([[5, 6]]), np.array([[7, 8], [9, 10]])]
df = pd.DataFrame.from_records(itertools.chain.from_iterable(lst))
print(df)
# 0 1
# 0 1 2
# 1 3 4
# 2 5 6
# 3 7 8
# 4 9 10
P.S。请不要post截图。制作一个人们可以轻松处理的可复制和粘贴的最小示例。