我有两个形状如下的numpy数组:
现在我想将数组b中的数据复制到数组a中,使得数组a的第二和第三维被相应b数组的行的同样3个值填充。
让我试着更加清晰地阐述: 数组b包含100行(100,3),每行都有三个值(100,3)。 现在,数组a(100,20,3,3)的每一行也应该在最后一个维度上保持相同的三个值(100,20,3,3),而对于同一行(100,20,3,3),这些三个值在第二和第三维上保持不变(100,20,3,3)。
我怎样才能按照描述的方式复制数据而不使用循环?我无法完成它,但必须有一个简单的解决方案。
print(a.shape) -> (100, 20, 3, 3)
print(b.shape) -> (100, 3)
数组a
为空的,我只需要预定义的形状,所以我用以下方式创建它:
a = numpy.empty(shape=(100, 20, 3, 3))
现在我想将数组b中的数据复制到数组a中,使得数组a的第二和第三维被相应b数组的行的同样3个值填充。
让我试着更加清晰地阐述: 数组b包含100行(100,3),每行都有三个值(100,3)。 现在,数组a(100,20,3,3)的每一行也应该在最后一个维度上保持相同的三个值(100,20,3,3),而对于同一行(100,20,3,3),这些三个值在第二和第三维上保持不变(100,20,3,3)。
我怎样才能按照描述的方式复制数据而不使用循环?我无法完成它,但必须有一个简单的解决方案。
None
而不使用np.repeat
函数的方法吗?只是好奇是否有另一种方便的方法。 - H123321np.broadcast_to(b, (2,3,2,3)).transpose(2,0,1,3)
,但正如我在帖子中提到的那样,我建议你不要这样做,除非你以后不会对它进行任何处理。仅使用None
进行广播只会添加维度,而不会复制内容(添加维度的形状为1)。 - Ehsan