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

如何从空numpy数组通过添加一维numpy数组生成二维numpy数组?

解决Numpy添加数组后扁平化的问题

你遇到的问题是因为初始创建的np.array([])是一维空数组,直接使用np.append时,默认会将所有输入扁平化后拼接,所以得到的是一维结果。要得到二维数组,有两种常用方案:

方案一:初始化二维空数组并指定维度

先创建一个行数为0、列数与目标数组一致的二维空数组,之后添加行时指定axis=0,确保沿行方向拼接:

import numpy as np

# 初始化二维空数组,列数设为8(和后续要添加的数组长度一致)
a = np.empty((0, 8))

# 添加第一个一维数组,注意用[]包裹成二维形式
row1 = np.array([1, 2, 3, 4, 5, 6, 7, 8])
a = np.append(a, [row1], axis=0)

# 添加第二个一维数组
row2 = np.array([9, 10, 11, 12, 13, 14, 15, 16])
a = np.append(a, [row2], axis=0)

print(a)

输出结果:

[[ 1.  2.  3.  4.  5.  6.  7.  8.]
 [ 9. 10. 11. 12. 13. 14. 15. 16.]]

方案二:先收集数组到Python列表,再转Numpy数组

这种方法效率更高(避免Numpy频繁扩容),先把所有一维数组存入普通Python列表,最后一次性转成二维Numpy数组:

import numpy as np

# 用Python列表暂存所有行
row_list = []
row_list.append([1, 2, 3, 4, 5, 6, 7, 8])
row_list.append([9, 10, 11, 12, 13, 14, 15, 16])

# 转成二维Numpy数组
a = np.array(row_list)

print(a)

输出结果:

[[ 1  2  3  4  5  6  7  8]
 [ 9 10 11 12 13 14 15 16]]

为什么原方法不行?

np.array([])创建的是一维数组,当你调用np.append(a, row1)时,未指定axis参数,Numpy会自动将两个输入数组都扁平化后拼接,最终得到一维数组。如果强行指定axis=0,会因为维度不匹配报错,所以必须从一开始就初始化二维结构。

内容的提问来源于stack exchange,提问作者miitchel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:15:41