You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何将列表拼接至numpy nd array?

嘿,这个问题我之前做项目的时候也碰到过,其实numpy里有好几种实用的方法能搞定把列表拼接进ndarray的需求,我给你梳理几个常用场景和对应的实现方式,你可以根据自己的情况选:

1. 用np.append()快速追加

这是最直观的方法,适合给现有ndarray末尾追加单个或多个列表。需要注意的是,如果要保持多维结构,得确保列表的维度和原数组匹配,或者手动调整。

import numpy as np

# 假设我们有一个二维ndarray
original_arr = np.array([[1, 2], [3, 4]])
# 要拼接的一维列表
new_row = [5, 6]

# 情况1:不关心维度,直接扁平化拼接
flattened_result = np.append(original_arr, new_row)
print(flattened_result)  # 输出: [1 2 3 4 5 6]

# 情况2:保持二维结构,把列表当成一行追加
# 这里要把列表包成二维的[new_row],不然维度不匹配会报错
2d_result = np.append(original_arr, [new_row], axis=0)
print(2d_result)
# 输出:
# [[1 2]
#  [3 4]
#  [5 6]]

2. 用np.concatenate()灵活拼接多个序列

如果要一次性拼接多个列表(甚至多个ndarray),np.concatenate()会更高效灵活。它要求除了拼接轴之外的所有维度都一致,所以记得把列表转成ndarray或者调整好结构。

import numpy as np

original_arr = np.array([[1,2],[3,4]])
list_a = [5,6]
list_b = [7,8]

# 把两个列表转成二维ndarray后,和原数组垂直拼接(行方向)
combined_result = np.concatenate([original_arr, np.array([list_a, list_b])], axis=0)
print(combined_result)
# 输出:
# [[1 2]
#  [3 4]
#  [5 6]
#  [7 8]]

# 如果要横向拼接(列方向),要保证列数匹配
list_col = [[9], [10]]
col_result = np.concatenate([original_arr, np.array(list_col)], axis=1)
print(col_result)
# 输出:
# [[ 1  2  9]
#  [ 3  4 10]]

3. 用np.vstack()/np.hstack()简化多维拼接

这两个是numpy提供的便捷函数,vstack专门做垂直拼接(行方向),hstack做水平拼接(列方向),不用手动指定axis,用起来更直观。

import numpy as np

original_arr = np.array([[1,2],[3,4]])
new_row = [5,6]
new_col = [[7], [8]]

# 垂直拼接,直接把列表当成一行加进去
v_result = np.vstack([original_arr, new_row])
print(v_result)
# 输出:
# [[1 2]
#  [3 4]
#  [5 6]]

# 水平拼接,把列表当成一列加进去
h_result = np.hstack([original_arr, new_col])
print(h_result)
# 输出:
# [[1 2 7]
#  [3 4 8]]

小提醒

  • 如果拼接时出现维度不匹配的报错,先检查列表和原数组的形状,比如原数组是二维的,要追加行的话,列表得是一维的,然后用[列表]包成二维结构;
  • 要是需要频繁拼接大量数据,尽量别反复用np.append(),因为它每次都会创建新数组,效率低。建议先把所有要拼接的列表收集到一个列表里,最后用np.concatenate()一次性处理。

内容的提问来源于stack exchange,提问作者Víctor Martínez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:15:52