我的数据:
6.1101,17.592
5.5277,9.1302
8.5186,13.662
7.0032,11.854
5.8598,6.8233
8.3829,11.886
7.4764,4.3483
若格式为txt,则先转为Csv格式
1 # coding=utf-8 2 import csv 3 #要保存后csv格式的文件名 4 file_name_string="file.csv" 5 with open(file_name_string, 'wb') as csvfile: 6 #编码风格,默认为excel方式,也就是逗号(,)分隔 7 spamwriter = csv.writer(csvfile, dialect='excel') 8 # 读取txt文件,每行按逗号分割提取数据 9 with open('ex1data1.txt', 'rb') as file_txt: 10 for line in file_txt: 11 line_datas= line.strip('\n').split(',') 12 spamwriter.writerow(line_datas)
得到file.csv文件,其中ex1data1.txt为原数据,file.csv为转化后的csv数据:
读取Csv格式数据:
1 # coding=utf-8 2 import tensorflow as tf 3 import os 4 import csv 5 #要保存后csv格式的文件名 6 file_name_string="file.csv" 7 filename_queue = tf.train.string_input_producer([file_name_string]) 8 #每次一行 9 reader = tf.TextLineReader() 10 key,value = reader.read(filename_queue) 11 record_defaults = [[1.0], [1.0]] # 这里的数据类型决定了读取的数据类型,而且必须是list形式 12 col1, col2 = tf.decode_csv(value, record_defaults=record_defaults) # 解析出的每一个属性都是rank为0的标量 13 with tf.Session() as sess: 14 #线程协调器 15 coord = tf.train.Coordinator() 16 #启动线程 17 threads = tf.train.start_queue_runners(coord=coord) 18 is_second_read=0 19 line1_name='%s:1' % file_name_string 20 print line1_name 21 while True: 22 #x_第一个数据,y_第二个数据,dline_key中保存当前读取的行号 23 x_, y_,line_key = sess.run([col1, col2,key]) 24 25 #若当前line_key第二次等于第一行的key(即line1_name)则说明读取完,跳出循环 26 if is_second_read==0 and line_key==line1_name: 27 is_second_read=1 28 elif is_second_read==1 and line_key==line1_name: 29 break 30 print (x_,y_,line_key) 31 #循环结束后,请求关闭所有线程 32 coord.request_stop() 33 coord.join(threads) 34 sess.close()
输出结果: