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