Python中如何将单个2x2数组复制为同变量下2个堆叠的2x2数组
报错原因
np.stack()的语法要求第一个参数传入待堆叠数组构成的可迭代对象(列表/元组等),第二个参数是指定堆叠轴的整数值。你写的np.stack(self.concs,self.concs)会把第二个self.concs数组当成轴参数解析,轴参数要求是整数,传入数组自然触发TypeError: only integer scalar arrays can be converted to a scalar index报错。
实现方案
你需要的是形状为(2,2,2)、两个0轴切片都和原2×2数组self.concs完全一致的三维数组,任选以下一种方法即可实现:
- 修正
np.stack传参:把两份原数组包成列表作为第一个参数传入
# 正确的stack写法 res = np.stack([self.concs, self.concs])
- 用
np.repeat实现:适合需要复制N份的场景,无需重复书写原数组名
# 先给原数组增加最外层维度,再沿新维度重复2次 res = np.repeat(self.concs[np.newaxis, :, :], repeats=2, axis=0)
- 用
np.tile实现:直接指定每个维度的重复倍数
# 0轴重复2次,行、列维度保持原长度不重复 res = np.tile(self.concs, (2, 1, 1))
以上三种方法得到的数组结构和你给出的目标完全一致,可以通过print(res.shape)验证输出为(2, 2, 2),打印数组内容就能看到两层完全相同的2×2矩阵。
内容的提问来源于stack exchange,提问作者Confused_scientist
相关产品推荐
相关产品推荐

