Numpy提取和写入文件

numpy提供了强大的科学计算的功能,而在使用中,数据往往是存储在文件中的,那么如何进行文件的提取和写入了,numpy同样提供了用于提取和写入文件的方法

首先是常规的open with和函数np.loadtxt()

对于txt文件,可以使用np.loadtxt()函数读取(csv文件一样用它,因为csv数据也是纯文本数据,但csv以逗号分隔,读起来简单,txt文件可能要自己去找分隔符)

例子如下:

#该文件存放内容如下:
# Study python I can learn a lot
# Study python I can programming
# Study python I can be happier

with open("C:\\Users\\30378\\Desktop\\py_work\\learn_python.txt","r",encoding="utf-8") as f:
    c=f.readlines()
    print(c)

data=np.loadtxt("C:\\Users\\30378\\Desktop\\py_work\\learn_python.txt",delimiter=",",dtype=str)
print(data,data.dtype)
data=data.astype('<U50')
data[0]+=" but I don't want to learn"
print(data)
np.savetxt("C:\\Users\\30378\\Desktop\\py_work\\learn_python.txt",data,delimiter=',',fmt='%s')

输出为:

['Study python I can learn a lot\n', 'Study python I can programming\n', 'Study python I can be happier\n']
['Study python I can learn a lot' 'Study python I can programming'
 'Study python I can be happier'] <U30
["Study python I can learn a lot but I don't want to"
 'Study python I can programming' 'Study python I can be happier']
[Finished in 290ms]

大概解释一下,首先打开文件后读取每一行,存放到列表里面,列表的每个元素就是文件的一行(注意这里包括了换行符),下面使用的是loadtxt函数,以’,‘为分割符,但文件里每行都是一句话,不是以‘,’为分隔符的,所以找不到‘,‘就将整行视为一个单元,所以就还是相当于以行读取,但与上面open with不同的是,这里没有了\n换行符,这是因为使用NumPy的loadtxt()函数加载文本文件时,它会自动处理末尾的换行符,并将其从数组中的字符串元素中去除,方便数据处理和避免潜在的问题,后面有个<u30,意思是数据类型为Unicode字符串,30是这些字符串中最长的长度,然后在第一句加上一段,就重新写入文件啦,写入文件的常用函数为np.savetxt

另外有一种numpy独有的模式,那就是用二进制保存,示例如下

np.save("C:\\Users\\30378\\Desktop\\py_work\\learn_python.npy",data)
print(os.listdir("C:\\Users\\30378\\Desktop\\py_work"))
npy_data=np.load("C:\\Users\\30378\\Desktop\\py_work\\learn_python.npy")
print(npy_data)

注意这里使用save函数保存的就是二进制文件了,后缀为.npy,结果

['Country_city_Test.py', 'delete.py', 'figure.py', 'hello.py', 'impot.py', 'learn_python.npy', 'learn_python.txt', 'make_cars.py', 'name.txt', 'randomwalk.py', '__pycache__']
["Study python I can learn a lot but I don't want to"
 'Study python I can programming' 'Study python I can be happier']
[Finished in 317ms]

注意这里还打印了目录下的文件列表,发现确实多了一个'learn_pytho.npy',二进制文件不能直接用鼠标点开,要使用特定功能加载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值