我们可以将向量更改为 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.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]])
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.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]])