如何使用np.full()创建沿指定维度填充值的三维数组?
正确使用np.full创建指定三维数组的方法
方法1:调整填充值形状适配广播规则
让填充值的形状与目标数组形状(2,3,1)兼容广播即可,只需将填充值调整为(2,1,1)的嵌套结构:
import numpy as np result = np.full((2, 3, 1), [[[1]], [[2]]]) print(result)
运行后会输出你期望的结果:
[[[1] [1] [1]] [[2] [2] [2]]]
方法2:通过数组扩展维度实现
如果不想手动写多层嵌套列表,也可以先创建二维数组,再扩展最后一维来满足广播要求:
import numpy as np fill_val = np.array([[1], [2]])[:, :, np.newaxis] # 将形状从(2,1)转为(2,1,1) result = np.full((2, 3, 1), fill_val)
错误原因说明
你之前的代码报错,是因为填充值形状(2,1)在广播时会被自动补前导维度,变为(1,2,1),与目标形状(2,3,1)的第二维度(2 vs 3)不兼容——广播规则要求对应维度要么相等,要么其中一个为1。调整为(2,1,1)后,第二维度为1,可以扩展到目标的3,所有维度都满足广播条件,就能正常生成数组了。
内容的提问来源于stack exchange,提问作者zxdawn
相关产品推荐
相关产品推荐

