Python NumPy多维数组插入元素时保持目标维度形状的方法
numpy insert插入元素后数组被展平问题修复
问题原因
- 调用
np.insert时未指定axis参数,函数默认会先将原数组展平为一维结构再执行插入,因此最终得到形状为(8,)的一维数组,不符合维度保留要求。 - 你的目标是在形状为
(1,7,1)的数组B的第二个维度(numpy维度索引从0开始计数,对应axis=1,也就是原长度为7的维度)插入元素,插入时需要明确指定操作轴,同时保证待插入元素的形状和目标轴的切片形状匹配。
正确实现代码
import numpy as np B = np.array([[[0.678731133], [1.244425627], [0.767884084], [2.006154222], [3.073758392], [1.037728999], [5.032947535]]]) B1 = np.array([[[10]]]) # 调整待插入数组形状为(1,1,1),匹配目标维度要求 # 指定在axis=1轴的索引2位置插入B1 B2 = np.insert(B, 2, B1, axis=1) print("B2=", B2) print("B2 shape=", B2.shape)
运行结果
执行代码后输出如下,数组形状为目标的(1,8,1),维度结构保持不变,且在指定位置插入了元素10:
B2= [[[ 0.67873113] [ 1.24442563] [10. ] [ 0.76788408] [ 2.00615422] [ 3.07375839] [ 1.037729 ] [ 5.03294754]]] B2 shape= (1, 8, 1)
注:你给出的期望输出示例漏写了插入的10元素,上述结果才是插入操作后的正确输出。
内容的提问来源于stack exchange,提问作者Wiz123
相关产品推荐
相关产品推荐

