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

如何在NumPy中追加数组而不扁平化,生成预期的二维数组?

在NumPy中追加数组避免扁平化的解决方案

你遇到的问题核心在于:参与拼接的数组都是一维的,维度不匹配导致无法直接得到二维结果。

错误原因分析

  • 初始的h是一维空数组,追加一维数组g后,h仍为一维数组(形状(2,))。
  • 当使用np.append(h, i, axis=0)时,两个一维数组会被沿0轴拼接成更长的一维数组(形状(4,)),而非二维数组。
  • 使用axis=1报错是因为一维数组只有0轴,不存在1轴,触发AxisError。

正确解决方案

要得到[[2,4],[6,9]]这样的二维数组,需要确保参与拼接的数组是二维形态,再沿0轴拼接。以下是几种可行方法:

方法1:先将一维数组升维,再追加

import numpy as np

# 初始化空的二维数组(形状为(0,2),表示0行,每行2个元素)
h = np.empty((0, 2))
g = np.array([2,4])
i = np.array([6,9])

# 将一维数组升为二维(形状变为(1,2)),再沿0轴追加
h = np.append(h, g.reshape(1, 2), axis=0)
h = np.append(h, i.reshape(1, 2), axis=0)

print(h)
# 输出结果:
# [[2. 4.]
#  [6. 9.]]

方法2:使用np.vstack直接堆叠

np.vstack专门用于纵向堆叠数组,会自动处理维度匹配:

import numpy as np

g = np.array([2,4])
i = np.array([6,9])

h = np.vstack([g, i])
print(h)
# 输出结果:
# [[2 4]
#  [6 9]]

方法3:先收集到列表再转数组

如果不需要逐步追加,直接用列表收集一维数组再转换为NumPy二维数组更简单:

import numpy as np

g = np.array([2,4])
i = np.array([6,9])

h_list = [g, i]
h = np.array(h_list)
print(h)
# 输出结果:
# [[2 4]
#  [6 9]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 13:33:39