Python 如何从一维数组创建二维numpy数组?

Python 如何从一维数组创建二维numpy数组?,python,numpy,Python,Numpy,我有一个numpy阵列: import numpy as np A = np.array([1,2]) 例如,我想在二维numpy数组中制作两个元素的副本 B=[[1,1,1,1],[2,2,2,2]] # 4 copies of each element of A into a separate array 我该怎么做呢?使用,然后重塑形状- np.repeat(A,4).reshape(-1,4) 整形(-1,4)基本上保留了4列数,-1指定它根据要整形的数组的总大小计算行数。因此,对

我有一个numpy阵列:

import numpy as np
A = np.array([1,2])
例如,我想在二维numpy数组中制作两个元素的副本

B=[[1,1,1,1],[2,2,2,2]] # 4 copies of each element of A into a separate array
我该怎么做呢?

使用,然后重塑形状-

np.repeat(A,4).reshape(-1,4)
整形(-1,4)
基本上保留了
4
列数,
-1
指定它根据要整形的数组的总大小计算行数。因此,对于给定的样本,因为
np.repeat(A,4).size
8
,它指定
8/4=2
作为行数。因此,它将
np.重复(A,4)
变成
2D
形状数组
(2,4)

或者使用
np。将
A
扩展到
2D
后,使用-

或在扩展版本上使用-

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]])
或者,如果只读副本足够,您也可以使用(非常非常快速的操作):


您可以将矩阵乘法与1(正确形状)数组一起使用,然后转置最终数组

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
import numpy as np

A = np.array([1, 2])

n = 4
B = np.ones((n, 1))
out = (A*B).T
out = np.vstack((A,)*n).T