我很难将x_
数组附加到x
,同时保持正确的形状。我试过了vstack
,但它给了我一个错误。 axis=0
似乎没有按照预期做任何事情。我想要一个尺寸为:,len(x_)
)的数组。
编辑:
帖子末尾的代码给出了以下形状的数组x_:
array([3, 0, 2, 1, 0], dtype=int32)
我试过了:
x_ = np.append(x_,np.array([5,4,6,7,8]), axis = 0)
但是给出了:
array([3, 0, 2, 1, 0, 5, 4, 6, 7, 8])
但是,我想:
array([[3, 0, 2, 1, 0],
[5, 4, 6, 7, 8]])
我尝试了vstack(x,x_),但得到了:
x = np.vstack(x, x_)
TypeError: vstack() takes 1 positional argument but 2 were given
for k in range(2,9):
temp_ = (2*k)+1
x = np.zeros(shape=(1,temp_))
y = []
for i in range(k, len(number_list)-k-1):
newk = k
x_ = []
while newk >= -k:
x_.append(name[i-newk])
newk-=1
le = preprocessing.LabelEncoder()
le.fit(x_)
x_ = le.transform(x_)
x = np.append(x, x_ , axis=0)
y.append(residue_area[i])
答案 0 :(得分:1)
np.append
必须废除;它扭曲了太多初学者的想法。
np.concatenate
并且所有np.?stack
都将列表作为第一个参数。唯一的另一个参数是axis关键字。 np.append
通过用2个参数替换该列表来改变该约定 - 然后将其调整,放入列表并调用concatenate。除非您阅读源代码,否则您无法确定它是如何首先修改尺寸的。
启动互动会话,然后使用np.concatenate
进行游戏,直到您了解维度必须匹配为止。然后重新审视这个问题。
编辑:拼写错误concatenate
而不是concatenante
答案 1 :(得分:0)
但您可以使用np.vstack
:
>>> import numpy as np
>>> x_ = np.array([3, 0, 2, 1, 0])
>>> x_ = np.vstack([x_, np.array([5, 4, 6, 7, 8])])
>>> x_
array([[3, 0, 2, 1, 0],
[5, 4, 6, 7, 8]])
但一般来说,定期追加或堆叠数组是一个坏主意(因为它真的效率低下)。通常最好创建一个最终形状的数组并插入其中:
>>> x_ = np.empty((2, 5), dtype=int)
>>> x_[0] = [3, 0, 2, 1, 0]
>>> x_[1] = [5, 4, 6, 7, 8]
>>> x_
array([[3, 0, 2, 1, 0],
[5, 4, 6, 7, 8]])