我正在尝试找到一种用数行填充数组的方法。用一个例子来表达我想要的输出要容易得多。给定N×M矩阵的输入,array1,
array1 = np.array([[2, 3, 4],
[4, 8, 3],
[7, 6, 3]])
我想输出一个数组数组,其中每一行都是一个N x N,由相应行的值组成。输出将是
[[[2, 3, 4],
[2, 3, 4],
[2, 3, 4]],
[[4, 8, 3],
[4, 8, 3],
[4, 8, 3]],
[[7, 6, 3],
[7, 6, 3],
[7, 6, 3]]]
答案 0 :(得分:1)
您可以将数组从2d重新整形为3d,然后沿所需的轴使用numpy.repeat()
:
np.repeat(array1[:, None, :], 3, axis=1)
#array([[[2, 3, 4],
# [2, 3, 4],
# [2, 3, 4]],
# [[4, 8, 3],
# [4, 8, 3],
# [4, 8, 3]],
# [[7, 6, 3],
# [7, 6, 3],
# [7, 6, 3]]])
或者等效地,您可以使用numpy.tile
:
np.tile(array1[:, None, :], (1,3,1))
答案 1 :(得分:1)
另一个有时有用的解决方案是以下
out = np.empty((3,3,3), dtype=array1.dtype)
out[...] = array1[:, None, :]