2017-09-04 11 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の初心者であり、これを行うのに苦労しています。私は上記のような4つの列を持っている、私は列4に0.4より大きい値と0.5未満の値を持って1,2,3列を保存する必要があります。これ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

pls上記​​のコードを確認してください。 – 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

関連する問題