2017-10-07 32 views
1

我想补充我的所有行第一列... 例如“1的一列,前:如何添加一列到numpy的阵列

9 8 4 
3 4 5 
3 2 1 

后:

1 9 8 4 
1 3 4 5 
1 3 2 1 

我迄今代码:

import numpy as np 
import pandas as pd 

training = pd.read_csv('data.csv', header = None) 
training 
training.shape 

输出= (300, 14)

为了使数据转化为矩阵:

trainingData = training.values 

插入1周的一列在第一列的所有行

featureVector = np.insert(featureVector, 0, 1, axis=0) 

当我打印变量featureVector,我没有看到1的...我该怎么做或修复它?

+0

尝试使用axis = 1,因为您要更改列数。 – czr

回答

0

你可以连接一个1列的矩阵和training

>>> import numpy as np 
>>> training = np.array([9, 8, 4, 3, 4, 5, 3, 2, 1]).reshape(3, 3) 
>>> np.concatenate((np.ones((training.shape[1], training)), a), axis=1) 
array([[ 1., 9., 8., 4.], 
     [ 1., 3., 4., 5.], 
     [ 1., 3., 2., 1.]]) 

axis=1用于指定一列应予以补充。否则:

>>> np.concatenate(([[1,1,1]], training), axis=0) 
array([[1, 1, 1], 
     [9, 8, 4], 
     [3, 4, 5], 
     [3, 2, 1]]) 

您也可以使用column_stack

>>> np.column_stack((np.ones(training.shape[1]), training)) 
array([[ 1., 9., 8., 4.], 
     [ 1., 3., 4., 5.], 
     [ 1., 3., 2., 1.]]) 
+0

如果我想在第一列中更改300行,我是否必须进行循环? – KatZee

1

这为我工作:

array = training.values 
np.concatenate(([np.ones(len(array))],array.T),axis=0).T 
1

随着numpy.insert()常规:

import numpy as np 

training = np.loadtxt('data.csv', dtype=int) 
training = np.insert(training, 0, 1, axis=1) 
print(training) 

输出:

[[1 9 8 4] 
[1 3 4 5] 
[1 3 2 1]] 
+0

所以基本上他/她的轴是错的。好一个! +1 –

+0

@AntonvBR,谢谢... – RomanPerekhrest

+0

只是好奇,为什么你使用np.loadtxt()通过pd.read_csv?可以np.loadtxt()处理大型数据集? – KatZee