为矩阵添加额外的功能np.Concatenate错误:只有length-1数组可以转换为Python标量

时间:2016-12-25 10:42:48

标签: python-2.7 numpy

我想在矩阵中添加一个额外的列,以便使用某些机器学习算法预测某些功能。

我的火车套装有8899行和11个尺寸。

我想要做的就是添加额外的维度import xlwt wb = xlwt.Workbook() sheet1 = wb.add_sheet('Sheet 1') wb.save('self, example.xls') (参见代码)。

但我收到了一个错误:

distance

only length-1 arrays can be converted to Python scalars temp_train_long/lat

(8899L,)

1 个答案:

答案 0 :(得分:0)

查看concatenate文档

  

连接((a1,a2,...),轴= 0)

该函数有2个参数。第一个是列表或元组,即要加入的数组。第二个是数字,表示轴。它返回一个新数组。它没有到位。

X_train = df_train.as_matrix()

所以这是2d(8899,n),n大于9.根据pd文档,这是一个numpy array而不是numpy matrix(这很重要)

temp_train_long=(X_train[:,3] - X_train[:,7])**2#long
temp_train_lat = (X_train[:,4] - X_train[:,8])**2#lat

两个1d阵列(8899,)

distance = np.sqrt(temp_train_long + temp_train_lat)

另外(8899,)。 distance.T什么都不做;这不是形状的改变

np.concatenate(X_train, distance.T)

你给它2个参数,一个是2d数组,另一个是axis slow是1d数组。

你可能想要

new_train = np.concatenate((X_train, distance[:,None]), axis=1)

一个元组中的2个数组,轴是标量。 distance数组已变为2d 1列数组。