我们可以将矢量转换为numpy中的矩阵,其中矢量中的元素重复在具有m * n维度的矩阵中

时间:2017-08-16 13:27:28

标签: python numpy numba

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]我想用向量转换向量中的每个元素到我自己的维度

[[12 12 12]
 [13 13 13]
 [14 14 14]
 [15 15 15]
 [16 16 16]]

1 个答案:

答案 0 :(得分:1)

如果我正确理解了这个问题,您只需使用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]])