使用numpy在Python中填充数组或向量数组而无需循环

3

我想找到一种方法来填充一个由值组成的数组。举个例子更容易表达我的期望输出。给定一个N x 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]]]
2个回答

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

另一个有时有用的解决方案如下:

out = np.empty((3,3,3), dtype=array1.dtype)
out[...] = array1[:, None, :]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接