2017-10-07 31 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