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]]
答案 0 :(得分:1)
如果我正确理解了这个问题,您只需使用np.repeat
和reshape
:
>>> 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]])