python 读取TXT文件数据(字符或数值)存放在numpy数组中以及训练集测试集的处理(1)(个人笔记)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/yu_1628060739/article/details/102738226

1.使用Python内置文本操作函数读取数据

字符数据:
在这里插入图片描述
第一种写法:
处理文本数据代码:

import numpy as np
with open('out.txt') as f:
    line=f.readline()
    data_array=[]
    while line:
        num=list(map(str,line.split(' ')))#关于map()函数另一篇文章有详细介绍
        data_array.append(num)
        line=f.readline()
    data_array=np.array(data_array)

print(data_array[0][:])
print('*'*50)
print(data_array)

结果:

['伤感自拍' '半身风雨半身伤' '半句别恨半心凉\n']
**************************************************
[['伤感自拍' '半身风雨半身伤' '半句别恨半心凉\n']
 ['官宣表白' '我是檐上三寸雪' '你是人间惊鸿客\n']
 ['秀闺蜜照' '含娇含笑' '宿翠残红窈窕\n']
 ['睡前自拍' '南风知我意' '吹梦到西州\n']
 ['情侣离别' '南风未起' '念你成疾\n']]

这里使用的的readline()和while循环结合,readline()每次读取一行数据(这是因为read()读取文件是如果文件很大,一次全部读取,容易造成内存不足,因此通常会采取逐行读取)

第二种写法:

import numpy as np
with open('out.txt') as f:
    lines=f.readlines()
    data_array=[]
    for line in lines:
        num=list(map(str,line.split(' ')))
        data_array.append(num)
    data_array=np.array(data_array)

print(data_array[0][:])
print('*'*50)
print(data_array)

结果和上面的代码一样。

这里用的是readlines()和for循环结合。readlines()一次读取所有的行,返回一个字符串列表。如果文件比较,采用这种方式输出文件内容比较慢,因此,一般使用for循环将列表内容逐行输出。

数值类型:
在这里插入图片描述

import numpy as np
with open('out1.txt') as f:
    line=f.readline()
    data_array=[]
    while line:
        num=list(map(int,line.split(' ')))
        data_array.append(num)
        line=f.readline()
    data_array=np.array(data_array)

print(data_array[0][:])
print('*'*50)
print(data_array)

结果:

[1 2 3 4 5 6 7 8]
**************************************************
[[ 1  2  3  4  5  6  7  8]
 [ 9 10 11 12 13 14 15 16]
 [17 18 19 20 21 22 23 24]
 [25 26 27 28 29 30 31 32]]

只是map()函数的参数改变,对于数值类型可以是int或者float。
同理,和上文一样可以用readlines()来写。

第二种写法:

import numpy as np
with open('out1.txt') as f:
    lines=f.readlines()
    data_array=[]
    for line in lines:
        num=list(map(int,line.split(' ')))
        data_array.append(num)
    data_array=np.array(data_array)

print(data_array[0][:])
print('*'*50)
print(data_array)

结果和第一种写法一样。

扫描二维码关注公众号,回复: 7645349 查看本文章

2.使用numpy中的IO函数读取数据

numpy中有两个函数是处理正常的文本文件的(txt等);loadtxt()和savetxt()。
在这里插入图片描述
1.处理数值类型数据

import numpy as np
data_array=np.loadtxt('out1.txt',delimiter=' ')#默认float

print(data_array[0][:])
print('*'*50)
print(data_array)

结果:

[1. 2. 3. 4. 5. 6. 7. 8.]
**************************************************
[[ 1.  2.  3.  4.  5.  6.  7.  8.]
 [ 9. 10. 11. 12. 13. 14. 15. 16.]
 [17. 18. 19. 20. 21. 22. 23. 24.]
 [25. 26. 27. 28. 29. 30. 31. 32.]]

结果也是一样的。

2.处理字符类型:

import numpy as np
data_array=np.loadtxt('out.txt',dtype=str,delimiter=' ')

print(data_array[0][:])
print('*'*50)
print(data_array)

结果:

['伤感自拍' '半身风雨半身伤' '半句别恨半心凉']
**************************************************
[['伤感自拍' '半身风雨半身伤' '半句别恨半心凉']
 ['官宣表白' '我是檐上三寸雪' '你是人间惊鸿客']
 ['秀闺蜜照' '含娇含笑' '宿翠残红窈窕']
 ['睡前自拍' '南风知我意' '吹梦到西州']
 ['情侣离别' '南风未起' '念你成疾']]

关于loadtxt函数的介绍在以一篇单独介绍。

未完…

猜你喜欢

转载自blog.csdn.net/yu_1628060739/article/details/102738226