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

如何在numpy中向二维数组添加数据 实现按行存入新元素

问题根因

你得到一维数组的原因有两点:

  • 初始创建的np.array([])是一维空数组,本身没有行/列的二维结构
  • 调用np.append时没有指定axis参数,numpy会默认将两个输入数组全部展平后再拼接,自然无法得到二维结构。

另外你原代码里的ptint("-----")存在拼写错误,修改为print即可正常输出分隔线。


解决方案

方案1:指定维度逐步追加(适合少量数据追加场景)

初始化时直接定义二维空数组,追加时指定按行拼接即可:

import numpy as np
# 初始化形状为(0,3)的二维空数组,代表0行、3列,后续每次追加1行3个元素
np_xyz = np.empty((0, 3), dtype=int)

x = 1
y = 2
z = 3
xyz = [x,y,z]
# 追加时指定axis=0按行拼接,注意要把待添加的列表包裹一层转为二维结构
np_xyz = np.append(np_xyz, [xyz], axis=0)
print(np_xyz)
print("-----")

x = 4
y = 5
z = 6
xyz = [x,y,z]
np_xyz = np.append(np_xyz, [xyz], axis=0)
print(np_xyz)

运行输出:

[[1 2 3]]
-----
[[1 2 3]
 [4 5 6]]

方案2:先收集数据再转数组(推荐,性能更优)

numpy数组是定长结构,反复调用np.append会频繁重新分配内存,数据量大时建议先把所有行存入普通列表,最后一次性转为numpy数组:

import numpy as np
rows = []

x = 1
y = 2
z = 3
rows.append([x,y,z])
print(np.array(rows))
print("-----")

x = 4
y = 5
z = 6
rows.append([x,y,z])
print(np.array(rows))

输出和方案1完全一致。


内容的提问来源于stack exchange,提问作者Charles-Antoine Samson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:39:04