【问题标题】:Appending matricies into a single matrix with numpy使用 numpy 将矩阵附加到单个矩阵中
【发布时间】:2017-04-28 18:35:56
【问题描述】:

我在 Python 中有一个函数,它返回形状为 (100, 1)numpy.mat。我在一个循环中调用了这个函数 4 次,并希望得到 4 个矩阵并创建一个形状为(100, 4) 的矩阵。我曾在numpy.appendnumpy.concatenatenumpy.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.

【问题讨论】:

    标签: python numpy matrix


    【解决方案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 zeros[:,i-1] 期望那里有一个1D 数组。


    作为替代方案,在循环内部,我们也可以这样做 -

    zeros[:,[i-1]] = data
    

    因此,使用列索引列表[i-1] 而不是i-1,我们将保留分配data 的维度(保持为二维),这允许我们输入data,这也是2D,没有任何变化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-29
      • 2015-10-06
      • 2021-10-25
      • 2018-06-13
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 2019-04-07
      相关资源
      最近更新 更多