2015-12-28 48 views
0

我是一名PHP开发人员并试图在PYTHON中实现以下内容 我正在尝试使用numpy数组执行一些操作。 我的输入来自多列CSV文件。所以,我读文件,并试图为每列需要将CSV文件的每一列转换为numpy数组的帮助

格式我确实需要如下生成一个numpy的阵列

[[ 3.52173777] 
[ 0.46194453] 
[ 8.6932777 ] 
[ 15.18824896] 
[ 2.15025082] 
[ 11.5823697 ] 
[ 11.23766709] 
[ 17.13780022] 
[ 19.7389633 ] 
[ 10.1521166 ] 
[ 11.68934389] 
[ 13.22986065] 
[ 9.3644021 ] 
[ 16.38857516] 
[ 13.30463986] 
[ 9.8830318 ] 
[ 18.68062207] 
[ 13.92522195]] 

但格式我能够产生是

['124.4444444' '123.6203091' '139.659803' '171.4285714' '188.6051081' 
'185.0220264' '163.141994' '119.0839695' '124.3027888' '160.6425703' 
'177.7777778' '154.8387097' '120.3438395' '149.8127341' '110.8545035' 
'111.8012422' '146.7889908' '151.4195584' '148.9361702' '163.1067961' 
'111.747851' '112.3110151' '174.1935484' '178.5123967' '144.8275862' 
'176.4705882' '173.9130435' '117.1548117' '111.4285714' '145.2145215' 
'169.0140845' '151.8987342' '151.4726508' '106.5989848' '116.2444113' 
'169.8113208' '156.5217391' '188.2352941' '190.8548708' '122.3449448' 
'118.4210526' '173.9130435' '162.1621622' '152.866242' '181.4744802' 
'130.2170284' '126.2135922' '151.5151515' '154.0436457' '174.1654572] 

我的代码,我正在尝试与

csvfile1 = sys.argv[1] 
A_list = np.array([]) 
B_list = np.array([]) 
with open(csvfile1, newline='') as csvfile: 
    spamreader = csv.reader(csvfile, delimiter=',', lineterminator='\n') 
    for row in spamreader: 
     A_list = np.append(A_list, row[0]) 
     B_list = np.append(B_list, row[1]) 

print(A_list) 
print(B_list) 
+0

什么是您的CSV文件实际上是什么样子? – acdr

+0

查看['np.genfromtxt'](http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.genfromtxt.html)和['np.loadtxt']( http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.loadtxt.html#numpy.loadtxt) –

+0

对于数值的文件,'np.loadtxt'可能是你需要的。 –

回答

1

只需读取整个CSV为一个矩阵,然后使用列切片得到你想要的单柱:

>>> a = np.loadtxt('so34496620.csv', delimiter=',') 
>>> a[:,0]  
array([ 124.4444444, 185.0220264, 177.7777778, 111.8012422, 
     111.747851 , 176.4705882, 169.0140845, 169.8113208,   
     118.4210526, 130.2170284]) 
>>> a[:,4] 
array([ 188.6051081, 160.6425703, 110.8545035, 163.1067961, 
     144.8275862, 145.2145215, 116.2444113, 122.3449448, 
     181.4744802, 174.1654572])