[英]How to create a 2-D numpy array from 1-D array?
我有一个numpy数组:
import numpy as np
A = np.array([1,2])
例如,我想在2-D numpy数组中制作两个元素的n
-copies
B=[[1,1,1,1],[2,2,2,2]] # 4 copies of each element of A into a separate array
我该怎么做?
使用np.repeat
然后重塑 -
np.repeat(A,4).reshape(-1,4)
reshape(-1,4)
基本上保留4
个列, -1
指定它根据要重新整形的数组的总大小计算行数。 因此,对于给定的样本,因为np.repeat(A,4).size
是8
,所以它指定8/4 = 2
作为行数。 因此,它将np.repeat(A,4)
重新整形为形状(2,4)
的2D
数组。
或者使用np.repeat
延伸后A
到2D
与None/np.newaxis
-
np.repeat(A[:,None],4,axis=1)
或者在扩展版本上使用np.tile
-
np.tile(A[:,None],4)
您可以将它与另一个包含1
s的数组相乘:
>>> import numpy as np
>>> A=np.array([1,2])
>>> A[:, np.newaxis] * np.ones(4, int)
array([[1, 1, 1, 1],
[2, 2, 2, 2]])
或者如果您只需要只读副本就可以使用broadcast_to
(非常非常快速的操作):
>>> np.broadcast_to(A[:, None], [A.shape[0], 4])
array([[1, 1, 1, 1],
[2, 2, 2, 2]])
您可以使用矩阵乘法和(正确形状)1s数组,然后转置最终数组。
import numpy as np
A = np.array([1, 2])
n = 4
B = np.ones((n, 1))
out = (A*B).T
您也可以使用np.vstack
然后转置数组。
out = np.vstack((A,)*n).T
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.