【问题标题】:Add columns to existing numpy 2D-Array将列添加到现有的 numpy 2D-Array
【发布时间】:2020-11-08 08:42:55
【问题描述】:

基于这个问题:https://stackoverflow.com/a/8489498/9934156 我想扩展一个现有的 numpy 数组并用可变数量的随机列填充它。

我的做法是:

target = 'data'
amount = 4

data = {'data': array([[1, 2],
   [5, 9],
   [4, 4],
   [8, 42],
   ...,


N = data[target].shape
biggerarr = np.random.rand(N[0], N[1]+amount)
existingArr = np.array(data[target])
biggerarr[:,:] = existingArr

data[target] = a

但无论我如何使用它,我总是会得到任何一个

ValueError: 无法将输入数组从形状 (200,2) 广播到形状 (200,6)

或者当我做existingArr[:,:] = biggerarr

ValueError: 无法将输入数组从形状 (200,6) 广播到 形状 (200,2)

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    当您尝试执行 biggerarr[:,:] = existingArr 时,左侧有 (200, 6) 数组,右侧有 (200, 2) 数组。你需要做的是只设置部分更大的。这可以通过使用以下 sintax 来完成

    biggerarr[:, :N[1]] = existingArr
    

    这是写biggerarr[0:-1, 0:N[1]] = existingArr的简短版本。你可以在this question找到更多相关信息

    另一种添加列的方法是使用连接。在这种情况下,您需要水平堆叠数组,因此您应该指定 axis=1 才能使其工作。

    randomArr = np.random.rand(N[0], amount)
    biggerArr = np.concatenate((data[target], randomArr), axis=1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-31
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 2017-09-21
      • 1970-01-01
      • 2014-03-18
      • 1970-01-01
      相关资源
      最近更新 更多