Guest User

Untitled

a guest
Oct 22nd, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.46 KB | None | 0 0
  1. # coding: cp1251
  2. import random
  3. import timeit
  4. import numpy as np
  5. import pandas as pd
  6. import matplotlib.pyplot as plt
  7.  
  8. def do_lists(a):
  9. s = 0
  10. for i in range(n):
  11. s += a[i][i] # суммируем диагональ
  12. return s
  13.  
  14. def do_numpy(a):
  15. s = sum(a.diagonal())
  16. # for i in range(n):
  17. # s += a[i][i]
  18. return s
  19.  
  20. def do_numpy_method(a):
  21. s = a.trace() # получаем след матрицы
  22. return s
  23.  
  24. # list'ы
  25. # small
  26. df = pd.DataFrame(columns=["lists", "numpy", "numpy_method", "size"]) # задаём датафрейм
  27. k = 1
  28. n = 10
  29. a = []
  30. for j in range(n):
  31. a.append(random.sample(range(n), n)) # заполняем матрицу случайными данными
  32. b = np.random.randint(0, n, (n, n)) # заполняем матрицу случайными данными
  33. c = np.random.randint(0, n, (n, n)) # заполняем матрицу случайными данными
  34. for i in range(50):
  35. row = []
  36. row.append(timeit.timeit(lambda: do_lists(a), number=1)) # добавляем результат листов
  37. row.append(timeit.timeit(lambda: do_numpy(b), number=1)) # добавляем результат numpy
  38. row.append(timeit.timeit(lambda: do_numpy_method(c), number=1)) # добавляем результат метода numpy
  39. row.append(i)
  40. df.loc[i+1] = row
  41.  
  42. # print(df)
  43. fig1 = df[["lists", "numpy", "numpy_method"]].plot()
  44. fig1.set_xlabel("Number", fontsize=12)
  45. fig1.set_ylabel("Time", fontsize=12)
  46. plt.savefig("small.png")
  47. # plt.show()
  48.  
  49. # medium
  50. df = pd.DataFrame(columns=["lists", "numpy", "numpy_method", "size"])
  51. n = 50
  52. a = []
  53. for j in range(n):
  54. a.append(random.sample(range(n), n)) # заполняем матрицу случайными данными
  55. b = np.random.randint(0, n, (n, n)) # заполняем матрицу случайными данными
  56. c = np.random.randint(0, n, (n, n)) # заполняем матрицу случайными данными
  57. for i in range(50):
  58. row = []
  59. row.append(timeit.timeit(lambda: do_lists(a), number=1)) # добавляем результат листов
  60. row.append(timeit.timeit(lambda: do_numpy(b), number=1)) # добавляем результат numpy
  61. row.append(timeit.timeit(lambda: do_numpy_method(c), number=1)) # добавляем результат метода numpy
  62. row.append(i)
  63. df.loc[i+1] = row
  64. # print(df)
  65. fig2 = df[["lists", "numpy", "numpy_method"]].plot()
  66. fig2.set_xlabel("Number", fontsize=12)
  67. fig2.set_ylabel("Time", fontsize=12)
  68. plt.savefig("medium.png")
  69. # plt.show()
  70.  
  71. # big
  72. df = pd.DataFrame(columns=["lists", "numpy", "numpy_method", "size"])
  73. n = 100
  74. a = []
  75. for j in range(n):
  76. a.append(random.sample(range(n), n)) # заполняем матрицу случайными данными
  77. b = np.random.randint(0, n, (n, n)) # заполняем матрицу случайными данными
  78. c = np.random.randint(0, n, (n, n)) # заполняем матрицу случайными данными
  79. for i in range(50):
  80. row = []
  81. row.append(timeit.timeit(lambda: do_lists(a), number=1)) # добавляем результат листов
  82. row.append(timeit.timeit(lambda: do_numpy(b), number=1)) # добавляем результат numpy
  83. row.append(timeit.timeit(lambda: do_numpy_method(c), number=1)) # добавляем результат метода numpy
  84. row.append(i)
  85. df.loc[i+1] = row
  86. # print(df)
  87. fig3 = df[["lists", "numpy", "numpy_method"]].plot()
  88. fig3.set_xlabel("Number", fontsize=12)
  89. fig3.set_ylabel("Time", fontsize=12)
  90. plt.savefig("big.png")
  91. plt.show() # выводим графики
Add Comment
Please, Sign In to add comment