摘要:本文主要向大家介绍了Python语言入门的Numpy数据存取与函数,通过具体的内容向大家展现,希望对大家学习Python语言入门有所帮助。
本文主要向大家介绍了Python语言入门的Numpy数据存取与函数,通过具体的内容向大家展现,希望对大家学习Python语言入门有所帮助。
Numpy数据存取与函数
CSV文件:
CSV (Comma‐Separated Value, 逗号分隔值),CSV是一种常见的文件格式,用来存储批量数据。
np.savetxt(frame, array, fmt='%.18e', delimiter=None)
参数说明:frame : 文件、字符串或产生器,可以是.gz或.bz2的压缩文件;array : 存入文件的数组;fmt : 写入文件的格式,例如:%d %.2f %.18e;delimiter : 分割字符串,默认是任何空格。
np.loadtxt(frame, dtype=np.float, delimiter=None,unpack=False)
参数说明:frame : 文件、字符串或产生器,可以是.gz或.bz2的压缩文件;dtype : 数据类型,可选;delimiter : 分割字符串,默认是任何空格;unpack : 如果True,读入属性将分别写入不同变量。
CSV文件的局限性:CSV只能有效存储一维和二维数组,np.savetxt() np.loadtxt()只能有效存取一维和二维数组。
多维数据的存取:
a.tofile(frame, sep='', format='%s')
参数说明:frame : 文件、字符串;sep : 数据分割字符串,如果是空串,写入文件为二进制;format : 写入数据的格式。
np.fromfile(frame, dtype=float, count=‐1, sep='')
参数说明:frame : 文件、字符串;dtype : 读取的数据类型;count : 读入元素个数,‐1表示读入整个文件;sep : 数据分割字符串,如果是空串,读入的文件为二进制。
需要注意:该方法需要读取时知道存入文件时数组的维度和元素类型,a.tofile()和np.fromfile()需要配合使用,可以通过元数据文件来存储额外信息。
Numpy的便捷文件存取:
np.save(fname, array) 或np.savez(fname, array)
参数说明:fname: 文件名,以.npy为扩展名,压缩扩展名为.npz;array : 数组变量。
np.load(fname)
参数说明:fname: 文件名,以.npy为扩展名,压缩扩展名为.npz。
程序实例:
[python] view plain copy 1. # -*- coding: utf-8 -*- 2. 3. import numpy as np 4. import os 5. 6. # 设置路径为当前路径 7. path = os.path.dirname(__file__); 8. os.chdir(path); 9. 10. 11. 12. data = np.arange(100).reshape(10, 10); 13. 14. # 保存csv文件 15. np.savetxt('a.csv', data, fmt='%d', delimiter=','); 16. 17. # 读取csv文件,不指定数据类型(默认为float) 18. a = np.loadtxt('a.csv', delimiter=','); 19. # 读取csv文件,指定数据类型 20. b = np.loadtxt('a.csv', dtype=np.int, delimiter=','); 21. 22. 23. 24. # csv只能保持二维数组,任意维度数据的存取使用tofile和fromfile 25. # sep指定分隔符,若不指定,则文件为二进制文件 26. data1 = np.arange(100).reshape(5, 10, 2); 27. data1.tofile("b.dat", sep=",", format="%d"); 28. 29. # fromfile方法读取文件,需要读取时知道存入文件时数组的维度和元素类型 30. # a.tofile()和np.fromfile()需要配合使用可以通过元数据文件来存储额外信息 31. c = np.fromfile("b.dat", sep=",", dtype=np.int).reshape(5,10,2); 32. 33. 34. 35. # 以numpy的文件类型来存取数据,文件扩展名为.npy,压缩文件为.npz 36. np.save("c.npy", data); 37. d = np.load("c.npy");
Numpy的随机数函数:
numpy库中有一个random子库为数组类型提供随机数
程序实例:
[python] view plain copy 1. # -*- coding: utf-8 -*- 2. 3. import numpy as np 4. 5. # numpy库中有一个random子库为数组类型提供随机数 6. 7. # rand() 生成给定数组大小的随机数组, 浮点数,[0,1),均匀分布 8. a = np.random.rand(3, 4, 5); 9. 10. # randn() 标准正态分布 11. b = np.random.randn(3, 4, 5); 12. 13. # randint(low[,high,shape]) 根据shape创建随机整数或整数数组,范围是[low, high) 14. c = np.random.randint(100, 200, (3, 4)); 15. print(c); 16. 17. # seed(s) 随机数种子,s是给定的种子值 18. # 两次设置相同的随机数种子 生成的随机数一样 19. np.random.seed(10); 20. test1 = np.random.randint(10, 20, (3,4)); 21. np.random.seed(10); 22. test2 = np.random.randint(10, 20, (3,4)); 23. 24. # shuffle(a) 根据数组a的第1轴进行随排列,改变数组x 25. np.random.shuffle(c); 26. print(c); 27. # permutation(a) 根据数组a的第1轴产生一个新的乱序数组,不改变数组x 28. d = np.random.randint(100, 200, (3, 4)); 29. print(d); 30. np.random.permutation(d); 31. print(d); 32. # 从一维数组a中以概率p抽取元素,形成size形状新数组replace表示是否可以重用元素,默认为True 33. e = np.random.randint(100, 200, (8,)); 34. print(e); 35. f = np.random.choice(e, (3, 2));
Numpy的统计函数:
NumPy直接提供的统计类函数
程序实例:
[python] view plain copy 1. # -*- coding: utf-8 -*- 2. 3. import numpy as np 4. 5. a = np.arange(15).reshape(3, 5); 6. 7. # 默认情况下axis = none,求的是所有值的总和 8. total = np.sum(a); 9. # axis = 0 每列求总和 10. total1 = np.sum(a, axis = 0); 11. # axis = 1 每行求总和 12. total2 = np.sum(a, axis = 1); 13. 14. 15. # 其他有axis选项的函数类似 16. 17. 18. mean = np.mean(a); 19. mean1 = np.mean(a, axis = 0); 20. 21. # 根据给定轴axis计算数组a相关元素的加权平均值 22. # 求每列的加权平均,例如第三列:2*10+7*5+1*12/(10+5+1)=4.1875 23. avg = np.average(a, axis = 0, weights=[10, 5, 1]); 24. 25. 26. # 标准差 std 27. std = np.std(a); 28. # 方差 yar 29. var = np.var(a); 30. 31. 32. b = np.arange(15, 0, -1).reshape(3, 5); 33. 34. maxb = np.max(b); 35. # 扁平化后的下标 36. min_index = np.argmin(b); 37. # 重塑成多维下标 38. remin_index = np.unravel_index(np.argmin(b), b.shape); 39. 40. # 最大值与最小值差 41. cha = np.ptp(b); 42. # 中值 43. media = np.median(b);
Numpy的梯度函数:
梯度:连续值之间的变化率,即斜率;
XY坐标轴连续三个X坐标对应的Y轴值:a, b, c,其中,b的梯度是: (c‐a)/2。
本文由职坐标整理并发布,了解更多内容,请关注职坐标编程语言Python频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号