2017-09-04 61 views
0
1 0 0  0.579322 
2 0 0  0.579306 
3 0 0  0.279274 
4 5 0  0.579224 
5 3 0  0.579157 
3 0 0  0.47907 
7 0 1  0.378963 
8 9 0  0.578833 

我是一名Python初学者,正努力做到这一点。我有上面提到的四个列,我需要保存1,2,3列,其值大于0.4且小于0.5,可以通过numpy完成吗? 这是我试过的代码。在另一列的某个范围内选择多个列

import csv 

csv_out = csv.writer(open('data_new.csv', 'w'), delimiter=',') 

f = open('coordiantes.txt',"w+") 
for line in f: 
vals = line.split('\t') 
    for vals ([3]>=0.4 & vals[3]<=0.5): 
    print vals[0],vals[1],vals[2] 
csv_out.writerow(vals[0], vals[1], vals[2],vals[3]) 
f.close() 
+0

当然可以,但你是怎么试试? (告诉我们你的代码,不要害羞;)) –

+1

请检查上面的代码 – newstudent

+0

上面的代码是一团糟,可能你没有发布任何测试 - 我特别加倍欣赏,特别是'open('coordiantes .txt',“w +”)'因为它截断了文件,文件名似乎有点不起眼。 – gboffi

回答

0

可与内置numpy的功能

几个做
vals = #your array 

#do a Boolean index of your array where the fourth column meets your criteria 
vals = vals[np.where((vals[:,3] <=0.5)&(vals[:,3]>0.4))] 

#use numpy to slice off last column and to save the file 
np.savetxt('coordiantes.txt',vals[:,:3],delimiter=',') 
0

你可以做到以下几点:

import numpy as np 

data = np.loadtxt('coordinates.txt') 
idx = np.where((data[:,3] <= 0.5) & (data[:,3] > 0.4))[0] # save where col 4's data is in (0.4,0.5] 
selected_data = data[idx,:3] # get the 1st three cols for the rows of interest 
np.savetxt('data_new.csv', selected_data, delimiter=',') 
+0

谢谢。但看起来像这不适用于csv文件格式。 – newstudent

相关问题