我在Python中有一个返回numpy.mat
形状(100, 1)
的函数。我在一个循环中调用了这个函数4次,并希望得到4个matricies并创建一个形状(100, 4)
的矩阵。我曾在numpy.append
,numpy.concatenate
和numpy.insert
找了一段时间,但一直无法使用。
以下是我的问题的简短SSCCE
zeros = np.zeros(shape=(100, 4))
for i in range(1, 5):
np.append(zeros, np.empty(shape=(100, 1)))
print(zeros)
其中zeros
会导致形状(100, 4)
的矩阵与"垃圾"每次致电numpy.empty
而不是所有0.
的价值。
答案 0 :(得分:1)
沿着这些方向做点什么 -
zeros = np.zeros(shape=(100, 4))
for i in range(1, 5):
data = np.random.rand(100,1) # func that returns (100,1) shaped array
zeros[:,i-1] = data.ravel()
我们也可以使用ravel()
或data[:,0]
代替np.squeeze(data)
,基本的想法是在那里提供1D
数组,因为LHS {{1}期望那里有一个zeros[:,i-1]
数组。
作为替代方案,在循环内部,我们也可以这样做 -
1D
因此,使用列索引zeros[:,[i-1]] = data
而不是[i-1]
的列表,我们将保留要分配i-1
的维度(保持为2D)并允许我们在data
中输入,data
也没有任何变化。