我们可以将向量更改为 numpy 中的矩阵,向量中的元素在具有 m*n 维度的矩阵中重复

can we change the vector into matrix in numpy with the elements in the vector repeats in a matrix with m*n dimensions

import numpy as np
import numba

@numba.vectorize('i4(i4)', target = 'parallel')
def mag(b):

    return b * b

 def main():

    mat_a = np.full((5, 3),2,dtype=np.int32)

    c = mag(mat_a)

    d = np.sum(c, axis = 1)

    print d

输出:[12 12 12 12 12]

但我希望输出是这样的:

[12 12 12]
[12 12 12]
[12 12 12]
[12 12 12]
[12 12 12]

清晰示例:

假设我有这样的输出:[12 13 14 15 16]我想用 numpy

将向量中的每个元素转换成我自己的维度
[[12 12 12]
 [13 13 13]
 [14 14 14]
 [15 15 15]
 [16 16 16]]

如果我理解正确,你可以简单地使用 np.repeatreshape:

>>> import numpy as np

>>> arr = np.array([1,2,3,4])
>>> n = 3
>>> np.repeat(arr, n).reshape(-1, arr.size)
array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3],
       [4, 4, 4]])

如果结果不需要可写,您还可以使用 np.broadcast_to 和转置:

>>> n = 7
>>> np.broadcast_to(arr, (n, arr.size)).T
array([[1, 1, 1, 1, 1, 1, 1],
       [2, 2, 2, 2, 2, 2, 2],
       [3, 3, 3, 3, 3, 3, 3],
       [4, 4, 4, 4, 4, 4, 4]])