如何将多个NumPy子数组合并为一个大数组?
问题描述
我有如下的NumPy数组列表:
array = [array([100000. , 100848.06652142, 99648.67144694, 102047.67944271, 103655.99048427, 104602.87678005, 104597.83419837, 103505.42736768, 104976.01311214, 104457.34603404, 105855.46549162, 105613.30235519, 105212.71840922, 107647.5054673 ]) array([107647.5054673 , 106891.82007643, 106979.91405552, 106030.74186486, 107856.04281712, 108502.71948581, 106557.2401056 , 105659.59829843, 105663.01875745, 107300.69453018, 106336.34733019, 107584.99034227, 108089.2320392 , 106786.91702337]) array([106786.91702337, 104416.74000465, 101289.12525402, 101932.58219813, 102625.04352578, 101767.46209616, 103345.4263012 , 102816.73322055, 102417.59316407, 104439.37518975, 103755.22627215, 103817.9744686 , 107872.40234863, 108110.9662065 ]) array([108110.9662065 , 109544.86827069, 111072.22392645, 112618.46235766, 113847.1768898 , 116708.86391903, 115790.02599715, 115614.72242411, 119225.88436354, 121991.38468934, 123304.85972848, 125571.38040251, 122456.3667249 ]) array([122456.3667249 , 127497.74699282, 128659.85495604, 125813.77115906, 129008.46450085, 128111.00914756, 123039.92607546, 124723.87932757, 124181.57385836, 125134.9276196 , 126027.8631434 , 129304.85119148, 128912.58600657])]
我尝试用np.concatenate()把这些子数组合并成一个大数组,但没有成功,请问最佳方法是什么?
解决方案
你遇到的问题根源在于数组列表里的子数组之间缺少逗号,这会导致Python无法正确识别这是一个包含多个元素的列表,自然也就没法用np.concatenate()处理。
只要给每个子数组之间加上逗号,修复后的列表结构是这样的:
import numpy as np # 修复后的数组列表 array_list = [ np.array([100000. , 100848.06652142, 99648.67144694, 102047.67944271, 103655.99048427, 104602.87678005, 104597.83419837, 103505.42736768, 104976.01311214, 104457.34603404, 105855.46549162, 105613.30235519, 105212.71840922, 107647.5054673 ]), np.array([107647.5054673 , 106891.82007643, 106979.91405552, 106030.74186486, 107856.04281712, 108502.71948581, 106557.2401056 , 105659.59829843, 105663.01875745, 107300.69453018, 106336.34733019, 107584.99034227, 108089.2320392 , 106786.91702337]), np.array([106786.91702337, 104416.74000465, 101289.12525402, 101932.58219813, 102625.04352578, 101767.46209616, 103345.4263012 , 102816.73322055, 102417.59316407, 104439.37518975, 103755.22627215, 103817.9744686 , 107872.40234863, 108110.9662065 ]), np.array([108110.9662065 , 109544.86827069, 111072.22392645, 112618.46235766, 113847.1768898 , 116708.86391903, 115790.02599715, 115614.72242411, 119225.88436354, 121991.38468934, 123304.85972848, 125571.38040251, 122456.3667249 ]), np.array([122456.3667249 , 127497.74699282, 128659.85495604, 125813.77115906, 129008.46450085, 128111.00914756, 123039.92607546, 124723.87932757, 124181.57385836, 125134.9276196 , 126027.8631434 , 129304.85119148, 128912.58600657]) ]
之后直接调用np.concatenate()就能顺利合并成一个大数组了:
merged_array = np.concatenate(array_list) print(merged_array)
np.concatenate()会沿着默认的轴(axis=0)把所有子数组按顺序拼接起来,这正是合并一维NumPy数组的最佳方法。
内容的提问来源于stack exchange,提问作者lee.edward01
相关产品推荐
相关产品推荐

