将Numpy数组附加到正确的形状

2024-09-22 16:39:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我很难在保持正确形状的同时将x_数组追加到x上。我尝试了vstack,但它给了我一个错误。axis=0似乎没有做任何它应该做的事情。我想要一个维数为(:,len(x_))的数组。在

编辑:

post末尾的代码给出了以下形状的数组x

array([3, 0, 2, 1, 0], dtype=int32) 

我试过了:

^{pr2}$

但是给出了:

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])

Tags: inleforlen错误nprange数组
2条回答

但您可以使用^{}

>>> 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]])

但通常情况下,定期追加或堆栈数组不是一个好主意(因为实际上效率很低)。通常最好创建一个最终形状的数组并插入其中:

^{pr2}$

np.append必须废除,它扭曲了太多初学者的思维。在

np.concatenate和所有的np.?stack都将一个列表作为第一个参数。唯一的另一个参数是axis关键字。np.append通过用2个参数替换该列表来更改该约定,然后对其进行调整,放入一个列表并调用concatenate。除非你阅读了源代码,否则你不知道它首先是如何修改维度的。在

打开一个交互式会话,并使用np.concatenate直到您理解了维度必须如何匹配。然后重新考虑这个问题。在

编辑:拼写错误concatenate而不是concatenante

相关问题 更多 >