将列添加到现有的numpy 2D数组

时间:2020-11-08 08:42:55

标签: python numpy

基于以下问题: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)

1 个答案:

答案 0 :(得分:0)

当您尝试执行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)