np.concatenate error ... ValueError:所有输入数组的维数必须相同

时间:2019-05-04 16:03:42

标签: python numpy dataframe

我的代码字很好,直到我尝试将标题加载到数据帧中为止。似乎与np.concatenate有关。

我尝试过转置数组以查看其方向是否错误。

print("\n")
print("Prediction")

Y = vectorizer.transform(df['plot_keywords'].astype('U'))

prediction = model.predict(Y)

df_tmp = np.concatenate([df, pd.DataFrame(np.transpose(prediction.astype(np.int32)), columns=['cluster_plot_keywords'])], axis=1)


#!!!this is where the error is, caused by the np.concatenate!!!
df = pd.DataFrame(df_tmp, columns=[np.concatenate([df.columns.values,'cluster_plot_keywords'])])

预期结果是我可以写df并打印数据框。

为数据框创建标题时,我收到以下错误:

ValueError    Traceback (most recent call last)
<ipython-input-12-42a155bf519f> in <module>
      7 
      8 #!!!this is where the error is, caused by the np.concatenate!!!
----> 9 df = pd.DataFrame(df_tmp, columns=[np.concatenate([df.columns.values,'cluster_plot_keywords'])])

ValueError: all the input arrays must have same number of dimensions

如果我打印df_tmp,它会正确输出数组,而不是作为数据帧输出,这就是为什么我试图在列中加载的原因:

array([['Color', 'James Cameron', 723.0, ..., 1.78, 33000, 0],
       ['Color', 'Gore Verbinski', 302.0, ..., 2.35, 0, 0],
       ['Color', 'Sam Mendes', 602.0, ..., 2.35, 85000, 0],
       ...,
       ['Color', 'Benjamin Roberds', 13.0, ..., nan, 16, 2],
       ['Color', 'Daniel Hsia', 14.0, ..., 2.35, 660, 2],
       ['Color', 'Jon Gunn', 43.0, ..., 1.85, 456, 1]], dtype=object)

1 个答案:

答案 0 :(得分:0)

np.concatenate([df.columns.values,'cluster_plot_keywords'])

您正在尝试将类似数组的对象(df.columns.values)与字符串'cluster_plot_keywords'(被“解释”为0维数组)连接起来。好像是一个错字。也许你的意思是

np.concatenate([df.columns.values, prediction['cluster_plot_keywords']])

np.concatenate([df.columns.values, df['cluster_plot_keywords']])

但是我无法确切地知道'cluster_plot_keywords'的确切含义(以及dfprediction及其各自的内容)。