当前位置:   article > 正文

Numpy数据的存取与函数_numpy存储数据

numpy存储数据

一、数据存取

1.CSV文件-一维二维数据的存取

CSV(逗号分隔值)是一种常见的文本文件格式,用于存储表格数据。CSV 文件使用逗号作为字段之间的分隔符,每行表示一个数据记录,每个字段表示一个数据项。

  1. a = np.arange(20).reshape((4,5))
  2. a
  3. Out[177]:
  4. array([[ 0, 1, 2, 3, 4],
  5. [ 5, 6, 7, 8, 9],
  6. [10, 11, 12, 13, 14],
  7. [15, 16, 17, 18, 19]])
  8. np.savetxt('a.csv',a,fmt='%.1f',delimiter=',')
  9. #显示当前目录即可在此目录下查看a.csv文件
  10. import os
  11. current_directory = os.getcwd()
  12. print(current_directory)

  1. b = np.loadtxt('a.csv',delimiter=',')
  2. b
  3. Out[184]:
  4. array([[ 0., 1., 2., 3., 4.],
  5. [ 5., 6., 7., 8., 9.],
  6. [10., 11., 12., 13., 14.],
  7. [15., 16., 17., 18., 19.]])
  8. #先获得float类型数据再转为int类型
  9. b = np.loadtxt('a.csv',delimiter=',').astype(np.int32)
  10. b
  11. Out[187]:
  12. array([[ 0, 1, 2, 3, 4],
  13. [ 5, 6, 7, 8, 9],
  14. [10, 11, 12, 13, 14],
  15. [15, 16, 17, 18, 19]])
  16. #通过converters参数将获取数据解析为float类型,再将数据转为int类型
  17. b = np.loadtxt('a.csv',dtype=np.int32,delimiter=',',converters=float)
  18. b
  19. Out[190]:
  20. array([[ 0, 1, 2, 3, 4],
  21. [ 5, 6, 7, 8, 9],
  22. [10, 11, 12, 13, 14],
  23. [15, 16, 17, 18, 19]])
  24. #unpack参数是将一列作为一个数组进行返回
  25. b = np.loadtxt('a.csv',dtype=np.int32,delimiter=',',converters=float,unpack='true')
  26. b
  27. Out[193]:
  28. array([[ 0, 5, 10, 15],
  29. [ 1, 6, 11, 16],
  30. [ 2, 7, 12, 17],
  31. [ 3, 8, 13, 18],
  32. [ 4, 9, 14, 19]])

2.多维数据的存取

1.tofile、fromfile

  1. a
  2. Out[194]:
  3. array([[ 0, 1, 2, 3, 4],
  4. [ 5, 6, 7, 8, 9],
  5. [10, 11, 12, 13, 14],
  6. [15, 16, 17, 18, 19]])
  7. #设置了sep参数,存储类型为字符型
  8. a.tofile("a.txt",sep=',',format='%s')
  9. b
  10. Out[197]:
  11. array([[ 0, 5, 10, 15],
  12. [ 1, 6, 11, 16],
  13. [ 2, 7, 12, 17],
  14. [ 3, 8, 13, 18],
  15. [ 4, 9, 14, 19]])
  16. #未设置了sep参数,存储类型为二进制类型
  17. b.tofile("b.txt",format='%s')
  18. #读取到的数据不具有维度信息,均为一维
  19. read_a = np.fromfile("a.txt",dtype=np.float32,count=-1,sep=",")
  20. read_a
  21. Out[204]:
  22. array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12.,
  23. 13., 14., 15., 16., 17., 18., 19.], dtype=float32)
  24. #reshape一下
  25. read_a = np.fromfile("a.txt",dtype=np.float32,count=-1,sep=",").reshape((4,5))
  26. read_a
  27. Out[206]:
  28. array([[ 0., 1., 2., 3., 4.],
  29. [ 5., 6., 7., 8., 9.],
  30. [10., 11., 12., 13., 14.],
  31. [15., 16., 17., 18., 19.]], dtype=float32)
  32. #由于tofile未设置stp参数(设置分隔符)读取也不设置
  33. read_b = np.fromfile("b.txt",dtype=np.int32,count=-1).reshape((4,5))
  34. read_b
  35. Out[211]:
  36. array([[ 0, 5, 10, 15, 1],
  37. [ 6, 11, 16, 2, 7],
  38. [12, 17, 3, 8, 13],

2.Numpy便捷存储

  1. a
  2. Out[212]:
  3. array([[ 0, 1, 2, 3, 4],
  4. [ 5, 6, 7, 8, 9],
  5. [10, 11, 12, 13, 14],
  6. [15, 16, 17, 18, 19]])
  7. np.save("a.npy",a)
  8. a_npy = np.load("a.npy")
  9. a_npy
  10. Out[215]:
  11. array([[ 0, 1, 2, 3, 4],
  12. [ 5, 6, 7, 8, 9],
  13. [10, 11, 12, 13, 14],
  14. [15, 16, 17, 18, 19]])
  15. #注:该方法下存的文件格式为npy,numpy指定格式

二、相关函数

1.随机数函数

基本随机库函数

  1. = np.random.rand(2,3)
  2. a
  3. Out[219]:
  4. array([[0.9060742 , 0.52295812, 0.83480179],
  5. [0.53175022, 0.72104291, 0.43391776]])
  6. a = np.random.randn(2,3)
  7. a
  8. Out[221]:
  9. array([[ 0.07845213, -0.93702257, -0.80773318],
  10. [ 0.44340223, 0.20507742, 0.5476877 ]])
  11. a = np.random.randint(1,10,(2,3))
  12. a
  13. Out[224]:
  14. array([[6, 3, 6],
  15. [5, 2, 8]])
  16. np.random.seed(1)
  17. np.random.rand()
  18. Out[226]: 0.417022004702574
  19. np.random.rand()
  20. Out[227]: 0.7203244934421581
  21. np.random.seed(1)
  22. np.random.rand()
  23. Out[229]: 0.417022004702574

  1. #在choice函数中,参数a数组必须是一维数组或是一个范围
  2. a = np.arange(20).reshape((4,5))
  3. a
  4. Out[241]:
  5. array([[ 0, 1, 2, 3, 4],
  6. [ 5, 6, 7, 8, 9],
  7. [10, 11, 12, 13, 14],
  8. [15, 16, 17, 18, 19]])
  9. np.random.shuffle(a)
  10. a
  11. Out[243]:
  12. array([[ 0, 1, 2, 3, 4],
  13. [10, 11, 12, 13, 14],
  14. [ 5, 6, 7, 8, 9],
  15. [15, 16, 17, 18, 19]])
  16. np.random.permutation(a)
  17. Out[244]:
  18. array([[ 5, 6, 7, 8, 9],
  19. [10, 11, 12, 13, 14],
  20. [15, 16, 17, 18, 19],
  21. [ 0, 1, 2, 3, 4]])
  22. a
  23. Out[245]:
  24. array([[ 0, 1, 2, 3, 4],
  25. [10, 11, 12, 13, 14],
  26. [ 5, 6, 7, 8, 9],
  27. [15, 16, 17, 18, 19]])
  28. a
  29. Out[256]:
  30. array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
  31. 17, 18, 19])
  32. np.random.choice(a,(2,10),p = a/np.sum(a))
  33. Out[266]:
  34. array([[16, 9, 10, 14, 5, 15, 7, 15, 16, 6],
  35. [13, 16, 13, 4, 14, 16, 14, 19, 15, 19]])
  36. #参数解释
  37. numpy.random.choice(a, size=None, replace=True, p=None)
  38. a:一维数组或整数范围。如果是一维数组,则表示从该数组中进行选择;如果是整数范围,则表示从该范围内的整数进行选择。
  39. size(可选):表示要选择的元素个数。如果不提供该参数,则默认选择一个元素。
  40. replace(可选):表示是否允许重复选择。如果为 True,则允许重复选择;如果为 False,则不允许重复选择。默认为 True
  41. p(可选):表示每个元素被选择的概率。如果提供了该参数,则必须与数组 a 的长度相同。默认情况下,每个元素被选择的概率相等。
  42. a = np.arange(5)
  43. a
  44. Out[281]: array([0, 1, 2, 3, 4])
  45. b = np.random.choice(a,(5,1),replace=False,p=[0.1,0.2,0.1,0.1,0.5])
  46. b
  47. Out[285]:
  48. array([[4],
  49. [1],
  50. [2],
  51. [3],
  52. [0]])

  1. a = np.random.uniform(1,10,(2,5))
  2. a
  3. Out[287]:
  4. array([[5.44392743, 6.57960147, 8.4608281 , 2.41112255, 1.16718582],
  5. [1.63019929, 5.377106 , 6.45696515, 6.11966293, 3.85626168]])
  6. b = np.random.normal(10,5,(2,5))
  7. b
  8. Out[289]:
  9. array([[10.16016264, 10.98135104, 14.5372558 , -0.67417408, 14.08423588],
  10. [15.92085655, 8.97759718, 9.4457777 , 17.07241363, 2.91677499]])
  11. c = np.random.poisson(0.5,(2,5))
  12. c
  13. Out[291]:
  14. array([[0, 1, 0, 1, 1],
  15. [1, 0, 1, 2, 0]])

2.统计函数

  1. a = np.arange(20).reshape(4,5)
  2. a
  3. Out[293]:
  4. array([[ 0, 1, 2, 3, 4],
  5. [ 5, 6, 7, 8, 9],
  6. [10, 11, 12, 13, 14],
  7. [15, 16, 17, 18, 19]])
  8. np.sum(a,axis=1)
  9. Out[294]: array([10, 35, 60, 85])
  10. np.sum(a,axis=0)
  11. Out[295]: array([30, 34, 38, 42, 46])
  12. np.sum(a)
  13. Out[296]: 190
  14. np.mean(a,axis=1)
  15. Out[297]: array([ 2., 7., 12., 17.])
  16. np.mean(a,axis=0)
  17. Out[298]: array([ 7.5, 8.5, 9.5, 10.5, 11.5])
  18. np.mean(a)
  19. Out[299]: 9.5
  20. np.average(a,axis=1,weights=[1,2,3,4,5])
  21. Out[301]: array([ 2.66666667, 7.66666667, 12.66666667, 17.66666667])
  22. np.average(a,axis=0,weights=[1,2,3,4])
  23. Out[302]: array([10., 11., 12., 13., 14.])
  24. np.average(a)
  25. Out[303]: 9.5
  26. np.std(a)
  27. Out[304]: 5.766281297335398
  28. np.var(a)
  29. Out[305]: 33.25
  30. np.var(a,axis=1)
  31. Out[306]: array([2., 2., 2., 2.])
  32. np.var(a,axis=0)
  33. Out[307]: array([31.25, 31.25, 31.25, 31.25, 31.25])

  1. a
  2. Out[308]:
  3. array([[ 0, 1, 2, 3, 4],
  4. [ 5, 6, 7, 8, 9],
  5. [10, 11, 12, 13, 14],
  6. [15, 16, 17, 18, 19]])
  7. np.min(a)
  8. Out[309]: 0
  9. np.max(a)
  10. Out[310]: 19
  11. np.argmax(a)
  12. Out[311]: 19
  13. np.unravel_index(np.argmax(a),a.shape)
  14. Out[313]: (3, 4)
  15. np.median(a)
  16. Out[315]: 9.5

3.梯度函数

一维数组计算梯度值

  1. a = np.random.randint(0,20,(5))
  2. a
  3. Out[320]: array([15, 18, 14, 12, 5])
  4. np.gradient(a)
  5. Out[321]: array([ 3. , -0.5, -3. , -4.5, -7. ])

二维数组计算梯度值

  1. a = np.random.randint(0,20,(2,5))
  2. a
  3. Out[323]:
  4. array([[12, 12, 12, 7, 7],
  5. [11, 12, 18, 6, 16]])
  6. np.gradient(a)
  7. Out[324]:
  8. [array([[-1., 0., 6., -1., 9.],
  9. [-1., 0., 6., -1., 9.]]),
  10. array([[ 0. , 0. , -2.5, -2.5, 0. ],
  11. [ 1. , 3.5, -3. , -1. , 10. ]])]

三、总结

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号