Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@d0uji
Created October 16, 2018 14:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save d0uji/abf377449377e74b77ad83a62d679f7b to your computer and use it in GitHub Desktop.
Save d0uji/abf377449377e74b77ad83a62d679f7b to your computer and use it in GitHub Desktop.
# coding: cp1251
import random
import timeit
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
def do_lists(a):
s = 0
for i in range(n):
s += a[i][i] # суммируем диагональ
return s
def do_numpy(a):
s = sum(a.diagonal())
# for i in range(n):
# s += a[i][i]
return s
def do_numpy_method(a):
s = a.trace() # получаем след матрицы
return s
# list'ы
# small
df = pd.DataFrame(columns=["lists", "numpy", "numpy_method", "size"]) # задаём датафрейм
k = 1
for i in range(50):
row = []
a = []
n = 10
for j in range(n):
a.append(random.sample(range(n), n)) # заполняем матрицу случайными данными
b = np.random.randint(0, n, (n, n)) # заполняем матрицу случайными данными
c = np.random.randint(0, n, (n, n)) # заполняем матрицу случайными данными
row.append(timeit.timeit(lambda: do_lists(a), number=1)) # добавляем результат листов
row.append(timeit.timeit(lambda: do_numpy(b), number=1)) # добавляем результат numpy
row.append(timeit.timeit(lambda: do_numpy_method(c), number=1)) # добавляем результат метода numpy
row.append(i)
df.loc[i+1] = row
# print(df)
fig1 = df[["lists", "numpy", "numpy_method"]].plot()
fig1.set_xlabel("Number", fontsize=12)
fig1.set_ylabel("Time", fontsize=12)
plt.savefig("small.png")
# plt.show()
# medium
df = pd.DataFrame(columns=["lists", "numpy", "numpy_method", "size"])
for i in range(50):
row = []
a = []
n = 50
for j in range(n):
a.append(random.sample(range(n), n)) # заполняем матрицу случайными данными
b = np.random.randint(0, n, (n, n)) # заполняем матрицу случайными данными
c = np.random.randint(0, n, (n, n)) # заполняем матрицу случайными данными
row.append(timeit.timeit(lambda: do_lists(a), number=1)) # добавляем результат листов
row.append(timeit.timeit(lambda: do_numpy(b), number=1)) # добавляем результат numpy
row.append(timeit.timeit(lambda: do_numpy_method(c), number=1)) # добавляем результат метода numpy
row.append(i)
df.loc[i+1] = row
# print(df)
fig2 = df[["lists", "numpy", "numpy_method"]].plot()
fig2.set_xlabel("Number", fontsize=12)
fig2.set_ylabel("Time", fontsize=12)
plt.savefig("medium.png")
# plt.show()
# big
df = pd.DataFrame(columns=["lists", "numpy", "numpy_method", "size"])
for i in range(50):
row = []
a = []
n = 100
for j in range(n):
a.append(random.sample(range(n), n)) # заполняем матрицу случайными данными
b = np.random.randint(0, n, (n, n)) # заполняем матрицу случайными данными
c = np.random.randint(0, n, (n, n)) # заполняем матрицу случайными данными
row.append(timeit.timeit(lambda: do_lists(a), number=1)) # добавляем результат листов
row.append(timeit.timeit(lambda: do_numpy(b), number=1)) # добавляем результат numpy
row.append(timeit.timeit(lambda: do_numpy_method(c), number=1)) # добавляем результат метода numpy
row.append(i)
df.loc[i+1] = row
# print(df)
fig3 = df[["lists", "numpy", "numpy_method"]].plot()
fig3.set_xlabel("Number", fontsize=12)
fig3.set_ylabel("Time", fontsize=12)
plt.savefig("big.png")
plt.show() # выводим графики
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment