python数据分析与展示(二)
数据存取与函数
一、CSV文件
CSV(Comma-Separated Value,逗号分隔值),CSV是一种常见的文件格式,用来存储批量数据。
CSV文件只能有效存储一位和二维数组。
写入数组:
import numpy as np np.savetxt(frame,array,fmt='%.18e',delimiter=None) # frame:文件、字符串或产生器,可以是.gz或.bz2的压缩文件 # array:存入文件的数组 # fmt:写入文件的格式,例如%d %.2f %.18e # delimiter:分割字符串,默认是任何空格
例子:
import numpy as np a=np.arange(100).reshape((5,20)) np.savetxt('a.csv',a,fmt='%d',delimiter=',',header="实验数组",encoding='utf-8')
# 实验数组 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39 40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59 60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99
读出数组:
import numpy as np np.loadtxt(frame,dtype=np.float,delimiter=None,unpack=False) # frame:文件、字符串或产生器,可以是.gz或.bz2的压缩文件 # dtype:数据类型,可选 # delimeter:分割字符串,默认是空格 # unpack:如果True,读入属性分别写入不同变量
例子:
import numpy as np a=np.loadtxt('a.csv',dtype=np.float,delimiter=',') print(a) ''' [[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.] [20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.] [40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59.] [60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79.] [80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99.]] '''
二、多维数据的的存取
写入数组:
import numpy as np np.tofile(frame,sep='',format='%s') # frame:文件、字符串 # sep:数据分割字符串,如果是空串,写入文件为二进制 # format:写入数据的格式
例子:
import numpy as np a=np.arange(100).reshape((5,20)) a.tofile('a.dat',sep=',',format='%d')
a.tofile('b.dat',format='%d') #此时写入的是二进制格
读出数组:
np.fromfile(frame,dtype=float,count=-1,sep='') # frame:文件、字符串 # dtype:读取的数据类型 # count:读入元素的个数,-1表示读入整个文件 # sep:数据分割字符串,如果是空串,写入文件为二进制
例子:
import numpy as np a=np.fromfile('a.dat',dtype=np.int,sep=',').reshape((5,20)) print(a) ''' [[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19] [20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39] [40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59] [60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79] [80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99]] '''
注意:该方法需要读取时知道存入文件时数组的维度和元素类型,a.tofile()和np.fromfile()需要配合使用,可以通过元数据文件来存储额外信息
三、多维数组的便捷文件存取
import numpy as np np.save(fname,array) #np.savez(frame,array) # fname:文件名,以.npy为扩展名,压缩扩展名为.npz # array:数组变量 np.load(fname) # fname:文件名,以.npy为扩展名,压缩扩展名为.npz
例子:
import numpy as np a=np.arange(100).reshape((2,5,10)) np.save('a.npy',a) a=np.load('a.npy') print(a) ''' [[[ 0 1 2 3 4 5 6 7 8 9] [10 11 12 13 14 15 16 17 18 19] [20 21 22 23 24 25 26 27 28 29] [30 31 32 33 34 35 36 37 38 39] [40 41 42 43 44 45 46 47 48 49]] [[50 51 52 53 54 55 56 57 58 59] [60 61 62 63 64 65 66 67 68 69] [70 71 72 73 74 75 76 77 78 79] [80 81 82 83 84 85 86 87 88 89] [90 91 92 93 94 95 96 97 98 99]]] '''
四、NumPy的随机函数
NumPy的随机函数子库是random库
例子:
例子:
例子:
五、NumPy统计函数
例子:
例子:
六、NimPy的梯度函数
- np.gradient(f):计算数组f元素的梯度,当f为多维时,返回每个维度梯度
- 梯度:连续值之间的变化率,即斜率。XY坐标轴连续三个X坐标对应的Y轴值,其中b的梯度是:(c-a)/2
例子: