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)
结果和第一种写法一样。
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函数的介绍在以一篇单独介绍。
未完…