NumPy IO:理解load, save, savez, loadtxt, savetxt

版权申诉
0 下载量 66 浏览量 更新于2024-09-07 收藏 91KB PDF 举报
"NumPy提供了多种IO功能,用于在磁盘上读取和写入文本数据或二进制数据。这些功能主要围绕npy文件格式,这是NumPy专门为ndarray设计的一种存储格式。npy文件包含了数组的数据、形状、数据类型等信息,确保数据能够被准确地重建。此外,NumPy还支持.npz格式,用于存储多个数组。 1. numpy.save()函数:此函数用于将一个数组以未压缩的二进制格式保存到.npy文件中。文件名参数`file`可以是包含或不包含.npy扩展名的字符串,如果没有提供扩展名,它会被自动添加。`allow_pickle`参数允许保存对象数组,而`fix_imports`参数则帮助在Python 2和Python 3之间兼容。 示例代码: ```python import numpy as np a = np.array([1, 2, 3, 4, 5]) np.save('outfile.npy', a) # 保存到outfile.npy np.save('outfile2', a) # 如果不指定.npy,也会自动加上 ``` 2. numpy.load()函数:与save()相对应,load()用于从.npy文件中加载数组。它能够正确解析由save()保存的二进制数据,并恢复为原始的ndarray。 示例代码: ```python b = np.load('outfile.npy') print(b) # 输出:[1 2 3 4 5] ``` 3. numpy.savez()函数:这个函数允许将多个数组保存到一个单一的.npz文件中,文件扩展名是必需的。所有数组作为位置参数(*args)或关键字参数(**kwds)传递。 示例代码: ```python np.savez('multiarrays.npz', arr1=a, arr2=b) # 保存两个数组到multiarrays.npz ``` 要加载.npz文件中的数组,可以使用`load()`函数,它会返回一个字典样式的对象,其中键对应于保存时使用的变量名。 示例代码: ```python data = np.load('multiarrays.npz') print(data['arr1']) # 输出:[1 2 3 4 5] print(data['arr2']) # 输出:加载的第二个数组 ``` 4. numpy.loadtxt()和numpy.savetxt()函数:这两个函数分别用于读取和写入普通的文本文件,如.txt。loadtxt()可以解析逗号分隔值(CSV)或其他分隔符的数据,而savetxt()则将数组转换为文本格式并写入文件。 示例代码: ```python c = np.loadtxt('data.txt') # 读取文本文件 np.savetxt('output.txt', a) # 将数组a保存为文本文件 ``` 通过这些IO函数,NumPy使得在内存和磁盘之间高效地传输和存储大量数据变得非常便捷。无论是单个还是多个数组,或者文本数据,NumPy都提供了简洁且强大的工具来处理。在处理大型数据集时,这些功能尤其有用,因为它们可以避免不必要的内存压力,并且由于它们的二进制格式,数据读写速度通常比纯文本格式快得多。"
2023-05-15 上传

import requests import time from bs4 import BeautifulSoup header={ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.12022 SLBChan/25', 'Host':'zhuti.xiaomi.com', 'Referer':'http://zhuti.xiaomi.com/lockstyle?page=2&sort=New', 'Cookie':'uiversion=5; __utmz=219621008.1672838090.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmc=219621008; JSESSIONID=aaapDywvYNfz79fBMiKRx; __utma=219621008.621547792.1672838090.1672886725.1672916631.3; route=ea4585473b17eff20a466a6aa9314dcc; __utmb=219621008.4.10.1672916631', 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' } headers={ 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.12022 SLBChan/25', 'sec-fetch-dest': 'document', 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' } def down1(): for i in range(1,5): url="http://zhuti.xiaomi.com/lockstyle?page="+str(i)+"&sort=New" down2(url) def down2(neirong): r=requests.get(neirong,headers=header) r.encoding="utf-8" print(r.status_code) demo=r.text print(demo) down3(demo) def down3(biaoqian): soup=BeautifulSoup(biaoqian,"html.parser") tags=soup.find_all("img") print(len(tags)) print(tags) for tag in tags: image=tag["data-src"] print(image) down4(image) def down4(shuchu): filename="image/"+str(int(time.time()*1000))+".jpg" r=requests.get(shuchu,headers=headers) f=open(filename,"wb") f.write(r.content) f.close() if __name__=="__main__": down1()

2023-07-09 上传