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

如何初始化空NumPy数组并添加一维数组生成二维矩阵?

如何用Numpy逐步构建二维矩阵

问题描述

想要创建一个空数组,逐步添加其他数组生成二维矩阵,尝试了以下代码:

import numpy as np
arr = np.array([])
arr = np.append(arr, [1, 2])
arr = np.append(arr, [3, 4])

得到一维数组:

array([1., 2., 3., 4.])

期望得到二维数组:

array([[1., 2.], [3., 4.]])

尝试初始化多维数组arr = np.array([[]])并使用concatenate:

arr = np.concatenate((arr, [1, 2]), axis=0)

仍得到一维数组,求修正方法。

解决方案

方法1:保持二维结构的append操作

初始化时创建指定列数的二维空数组,每次添加的子数组要包裹成二维形式,同时指定axis=0(按行添加):

import numpy as np

# 初始化一个0行2列的二维空数组,和目标子数组列数一致
arr = np.empty((0, 2))
# 每次添加的子数组要转成二维(用[[...]]包裹)
arr = np.append(arr, [[1, 2]], axis=0)
arr = np.append(arr, [[3, 4]], axis=0)
print(arr)
# 输出:
# [[1. 2.]
#  [3. 4.]]

如果用np.array([[]])初始化,第一次添加时必须保证维度匹配,否则会被扁平化:

arr = np.array([[]])
# 把[1,2]转成二维后再拼接
arr = np.append(arr, [[1, 2]], axis=0)
arr = np.append(arr, [[3, 4]], axis=0)

方法2:使用concatenate构建二维数组

和append同理,必须保证拼接的两个数组维度一致,添加的子数组要转成二维:

arr = np.empty((0, 2))
arr = np.concatenate([arr, [[1, 2]]], axis=0)
arr = np.concatenate([arr, [[3, 4]]], axis=0)
print(arr)

方法3:先收集列表再转Numpy数组(推荐)

Numpy数组每次拼接都会重新分配内存,数据量大时效率较低,更推荐先通过Python列表收集子数组,最后转成二维Numpy数组:

temp = []
temp.append([1, 2])
temp.append([3, 4])
arr = np.array(temp)
print(arr)

为什么之前的方法失败?

  • 用np.array([])初始化的是一维空数组,np.append默认会扁平化所有输入,最终结果还是一维。
  • 用np.array([[]])但拼接[1,2]时,[1,2]是一维数组,和二维的初始数组维度不匹配,concatenate会自动扁平化(或报错,取决于Numpy版本),导致结果仍是一维。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:55:39