如何向NumPy三维数组中追加二维零数组以增加矩阵层数?
如何给NumPy三维数组追加二维零数组以增加层数?
你当前的代码直接使用np.append(n, a)会导致数组被扁平化,因为二维数组a(形状(3,3))和三维数组n(形状(1,3,3))维度不匹配,np.append默认会先将所有输入展平后拼接,最终得到一维数组,无法实现增加层数的需求。
正确实现方式
核心是先将二维数组升维为三维数组(形状变为(1,3,3)),再在层数对应的维度(axis=0)上进行拼接,以下是几种可行方法:
方法1:使用np.append并指定axis=0
import numpy as np # 初始化三维数组 n = np.zeros((1,3,3), np.ubyte) n[0][0][1] = n[0][1][0] = 1 # 创建二维零数组 a = np.zeros((3,3), np.ubyte) # 将a升维为(1,3,3),并在axis=0维度追加 n = np.append(n, a[np.newaxis, :, :], axis=0) print(n)
输出结果:
[[[0 1 0] [1 0 0] [0 0 0]] [[0 0 0] [0 0 0] [0 0 0]]]
方法2:使用np.concatenate
# 升维后拼接 n = np.concatenate([n, a[np.newaxis, ...]], axis=0)
方法3:使用np.vstack
np.vstack默认在axis=0维度拼接,适合这种层数扩展场景:
n = np.vstack([n, a[np.newaxis, ...]])
关键说明
a[np.newaxis, :, :]或a[np.newaxis, ...]的作用是给二维数组增加一个新维度,让其形状从(3,3)变为(1,3,3),与原数组n的维度结构一致,这样才能在层数维度上完成拼接,得到形状为(2,3,3)的三维数组。
内容的提问来源于stack exchange,提问作者lucas
相关产品推荐
相关产品推荐

