文章目录
- 前言
- 一、文件的读取和存储
- 1.读取
- 2.存储
- 二、字符串的操作
- 1.对普通字符串
- 2.对读取的文件进行字符串操作
- 2.一些判断函数
- 三、Numpy的运用
- 1.随机函数的生成
- 总结
前言
Python读取数据的功能是非常重要的一个功能,该篇主要学习如何用Python进行文件的读取和保存。
全局首先还是需要先导入Numpy库:import numpy as np
一、文件的读取和存储
1.读取
文件的读取使用的是genfromtxt和loadtxt两个函数
data = np.genfromtxt(r'D:\data\CCK.txt',delimiter=',',skip_header = 1)
或者
data = np.loadtxt(r'C:\Users\86155\Desktop\bigdata\CCK.txt',delimiter=None,dtype='str')
读取出来的数据分别是这样的
dtype——转换数据类型,不设置dtype,输出数据类型为nan(空字符)
delimiter=’,’——表示数据由逗号分隔
对于读取的数据我们是不希望有表头的,可以通过skip_header关键字设置为整数,表示跳过文件开头对应的行数
可以使用help()方法来看如何使用
2.存储
使用savetxt(路径,data,delimiter,fmt)方法
np.savetxt(r'D:\data\jj.csv',data,delimiter = ',',fmt='%s')
可以看到路惊下就有了jj.csv文件。
二、字符串的操作
1.对普通字符串
# 字符串操作 char模块
[i.upper() for i in s_list]#遍历全部成大写字母,效率低
s_list = ['hello','world']
s_arr = np.char.upper(s_list)
#字符串连接
np.char.add(['中国','国庆'],['海军','大阅兵'])#想这种形式的二维数组的原理,
np.char.multiply(['中国','万岁'],3)#中国万岁*3
np.char.join([':','-'],['hello','world'])#分割合并
#替换字符串
a = ['我想学习python','好好学习Java']
b = np.char.replace(a,'学习','深入学习')
# 去除字符串符号
a = ['-电动汽车','海洋科技-','-学习python']
np.char.strip(a,'-')
2.对读取的文件进行字符串操作
打开文件代码如下:
f = open(r'D:\data\sanguo.txt',encoding = 'utf-8').readlines()
s = f[4]
arr = s.split('。')#用“。”分割
arr = np.char.replace(arr,'\xa0',' ')#将\xa0替换成空格“ ”
arr = np.char.strip(arr,'\n')#去掉\n
np.char.find(arr,'帝')#“帝”在各元素里出现的位置
s:
用“。”分割后:
替换\xa0后:
去掉\n后:
某个值在每个元素中出现的情况:
2.一些判断函数
np.char.islower(arr)#每一位是否都包含小写字母
np.char.isdigit(arr)#每一位是否都包含数字
np.char.isalpha(arr)#每一位是否只包含字母
np.char.count(arr,'来')#包含多少‘来’字
np.char.startswith(arr,'你')#是否以‘你’字开头
np.char.endswith(arr,'近')#是否以‘近’字结尾
三、Numpy的运用
1.随机函数的生成
random()
np.random.random(99)#产生99个0-1之间的浮点数
np.random.random((3,4))#产生3行4列的随机数
每次生成的数的结果都是不同的,如果想控制一下每次生成结果一样,需要seed()函数来固定初值:
np.random.seed(100)#固定了初始化总值
np.random.random((3,4))#每次产生的值都一样了
想要每个数字出现的概率相同,需要使用rand()函数:
np.random.rand(2,10)#产生0-1之间的均匀分布的随机数。
np.random.randint(0,100,size=100)#产生100个(给定了上下范围的)0-100之间的整数,size=([10,10],[10,10])
np.random.uniform(low=0,high=10,size=(20,20))#产生给定范围的随机数
np.random.normal(1,3,size=1000)#正态分布,均值为1,标准差为3 的100个序列
np.mean(np.random.normal(1,3,size=10000))#求均值
np.std(np.random.normal(1,3,size=10000))#标准差
np.random.randn(100)#mean=0,std=1的标准正态分布
s = np.array([1,2,3,5,6,7])
np.random.shuffle(s)#随机排序s
总结
所有的形式可以通过size来改变生成的是一维的还是二维的,如果生成二维的只需要size=(10,10)即可。