import pandas as pan #pour les données :gestion des data.frame
import numpy as np
import matplotlib.pyplot as plt

5+2
print(5+2)

help(np.random.poisson)

print("bonjour")
a = 3
a
print(a)
type(a)
b = 2*a**2+1
b
c = [1,2,3,4,5]
type(c)
c[0]
c[1]
c[2]
c[:2]
c[3:]


for i in [0,1,2,3]:
  print(i)
for j in range(4):
  print(j)

a = 1 #ceci est un commentaire
#a = 3 #ceci ne sera pas exécuté
print(a)
#Penser à bien commenter votre code pour pouvoir le relire facilement


a= 8
if a>4:
  print("a est plus grand que 4")
else:
  print("a est plus petit ou egal a 4")

for i in range(10):
    if not i==4:
        print(i)

s = sum(1,2,3,4) #souleve une erreur
help(sum) #il lui faut un "iterable" par exemple une liste
s = sum([1,2,3,4])
print(s)

b = np.random.binomial(1,1/2,30)
print(b)
b = np.random.binomial(1,1/2,30)
print(b)#résultat différent car on simule des Bernoulli, le retour est aléatoire
np.mean(b)
m = np.random.binomial(1,1/2,(4,3))
print(m)

l1 = [i**2 for i in range(10) if i%2]
l2 = [i**2 if i%2 else -1 for i in range(10)]
print(l1)
print(l2)


print(0.1*4)
a = np.exp(2)
print(a)
# ceci est un commentaire
b = np.cos(1); print("b = %s" % b)
# remplacement de %s 
# par la chaine qui suit le signe %

# une liste Python
u = [1, 9, -4, 0.5]
print(2*u)
# un tableau NumPy
v = np.array([1, 9, -4, 0.5])
print(2*v)
print(v[2])
print(v[0])
# la numerotation commence a zero
print(v.size)
print(np.size(v))
print(v.shape)


print(np.linspace(0, 2 * np.pi, 10))
print(np.linspace(20, 1, 10))
x,dx=np.linspace(0,6.3,10,retstep=True)
print(x)
print(dx)

x = np.arange(0, 10, 0.5)
print(x)

dx = 0.5
x = np.arange(0, 10+dx/2, dx)
print(x)

y = np.arange(10, -dx/2, -dx)
print(y)

print(np.repeat(3.2, 4))
x = np.array([[1,2],[3,4]])
print(np.repeat(x, 2))
print(np.repeat(x, 3, axis=1))
print(np.repeat(x, 4, axis=0))

A = np.array([1, 2, 3, 6])
B = np.array([0, -4, 9, 4]);
print(np.exp(A))
print(A+B)
print(A*B)
print(A/B)

print(2*A)
print(A+1)
print(A+np.array([1,2,3]))

print(A==2)
print(A[A>2])

u = np.arange(1,10,1)
print(np.sum(u))
print(np.cumsum(u))

A.shape = (2,2); print(A)
print(A.transpose())
C = B.reshape(2,2).T
print(C); print(A @ C)
print(np.matmul(A,C))
print(C[1,]); print(C/A[1,])

np.linalg.eig(A)
np.linalg.eigvals(A)


x = np.linspace(0, 2*np.pi, 100)
plt.plot(x, np.sin(x))
plt.show()

plt.plot(np.cos(x), np.sin(x))
plt.show()

plt.plot(x, np.cos(x), x, np.sin(x))
plt.show()

plt.plot(x, np.cos(x))
plt.plot(x, np.sin(x))
plt.show()


x = np.linspace(0, 2*np.pi, 100)
y = np.linspace(0., 1., 100)

plt.figure(1)
plt.plot(x, np.sin(x))

plt.figure(2)
plt.plot(y, y * np.sin(y))

plt.show()

plt.plot([0, 1], [1, 0], "b")
plt.plot(0.1, 0.9, "r+")
plt.xlabel("x")
plt.ylabel("y")
plt.title("joli graphe")
plt.legend(["segment", "point"])
plt.show()


fig,ax=plt.subplots(1,2)
ax[0].plot(x, np.sin(x))
ax[1].plot(y, y * np.sin(y))
fig.suptitle("2 jolis graphes")
ax[0].set_title("sinus")
plt.show()
