2021-03-27 python数据处理系统学习(九)Numpy的文件读写、字符串操作
1、读取数据
1.1 genfromtxt
import numpy as np
data=np.genfromtxt(r'C:\Users\wangyu\Desktop\毕业论文\python练习.txt',delimiter=',',encoding='utf-8')
通过type可以发现这是array
type(data)
Out[11]: numpy.ndarray
添加了一些细节后:
import numpy as np
data=np.genfromtxt(r'C:\Users\wangyu\Desktop\毕业论文\python练习.txt',delimiter=',',encoding='utf-8-sig',names=True,dtype=None)#跳过表头
type(data)
Out[23]: numpy.ndarray
data
Out[24]:
array([( 2, 100, 0.96070258, 1.15771286e+07, 43100, 1.55762304e+08, 5.90841713e+08, 7.46604016e+08, 3623, 1567, False),
( 3, 60, 0.97977928, 1.39459093e+07, 28055, 5.20269787e+07, 5.70177995e+08, 6.22204974e+08, 570, 135, False),
( 4, 60, 0.91860882, 4.28482561e+07, 2562, 2.19877104e+08, 1.83996969e+09, 2.05984679e+09, 131, 26, False),
( 5, 80, 0.95664292, -6.86102503e+05, 3089, 1.97784985e+08, 2.02632289e+08, 4.00417274e+08, 390, 33, False),
txt文件中的数据用什么间隔,则delimiter里写什么
1.2 loadtxt
data=np.loadtxt(r'C:\Users\wangyu\Desktop\毕业论文\python练习.txt',delimiter=',',encoding='utf-8-sig',dtype=str)
读取结果如图:
2、存储数据
savetxt
np.savetxt(r'C:\Users\wangyu\Desktop\毕业论文\python练习.csv',data,delimiter=',')#data为要保存的数据
3、字符串操作
3.1 输入数组/字符串
str_list=['hello world']
[i.upper() for i in str_list]#遍历str_list
Out[1]: ['HELLO WORLD']
import numpy as np
str_arr=np.char.upper(str_list)
str_arr
Out[3]: array(['HELLO WORLD'], dtype='<U11')
这说明原本既可以是数组形式也可以是字符串形式,但是经过np操作后就变成了数组形式
3.2 add函数操作
np.char.add(['hello','world'],['hello','China'])
Out[4]: array(['hellohello', 'worldChina'], dtype='<U10')
3.3 multiply函数操作
np.char.multiply(['hello','world'],3)
Out[5]: array(['hellohellohello', 'worldworldworld'], dtype='<U15')
用列表式也没有问题,就是处理起来比较麻烦,如下:
a=['hello','world']
[i*3 for i in a]
Out[6]: ['hellohellohello', 'worldworldworld']
3.4 join函数字符串连接
本质是进行分割合并
np.char.join([':','-'],['hello','world'])
Out[7]: array(['h:e:l:l:o', 'w-o-r-l-d'], dtype='<U9')
3.5 replace替换函数
b=['初步了解python','初步了解java']
c=np.char.replace(b,'初步了解','深入了解')
c
Out[9]: array(['深入了解python', '深入了解java'], dtype='<U10')
列表推导式替换方式如下:
[i.replace('初步了解','深入了解') for i in b]
Out[10]: ['深入了解python', '深入了解java']
3.6 strip去除指定字符串函数
a=['-hello-','-world-']
np.char.strip(a,'-')
Out[11]: array(['hello', 'world'], dtype='<U7')
strip只能去除头和尾
3.7 实操
f=open(r'C:\Users\wangyu\Desktop\毕业论文\python练习.txt',encoding='utf-8').readlines()
S=f[3]
arr=S.strip(',')#由于原本的数据由都好分隔开,所以这里填逗号
arr
Out[16]: '4,60,0.91860882,42848256.09,2562,219877104.4,1839969690,2059846794,131,26,\n'
下一步去除空格:
arr=np.char.rstrip(arr,'\n')
arr
Out[18]:
array('4,60,0.91860882,42848256.09,2562,219877104.4,1839969690,2059846794,131,26,',
dtype='<U75')
如果得到的列里有奇怪的符号,可以用replace替换,但是这里没有所以不进行操作。
接下来查找列表里是否有某些元素:
np.char.find(arr,'100')
Out[19]: array(-1)
返回-1表示没有查找到。
np.char.find(arr,'60')
Out[20]: array(2)
返回2表示在第二个位置查找到。
3.8 islower判断是否有小写字母
由于这里都是str,所以没有
np.char.islower(arr)
Out[21]: array(False)
3.9 isdigit判断是否有数字
由于这里都是str,所以没有
np.char.isdigit(arr)
Out[22]: array(False)
3.10判断一个数出现几次
np.char.count(arr,'60')
3.11 判断是否以指定符号开头/结尾
np.char.startswith(arr,'60')
np.char.endswith(arr,'60')