Objetivos
Objetos
e/ou Funcional
Instalando python o seu computador (Canopy, EPD, Spyder, PythonXY, etc):
URL=http://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh
wget $URL -O miniconda.sh
bash miniconda.sh -b -p $HOME/miniconda
export PATH="$HOME/miniconda/bin:$PATH"
conda update conda
conda config --add ioos
conda info -a
In [ ]:
Sal, Temp = 35.1, 17 # Salinidade e Temperatura
print(type(Sal))
print(type(Temp))
In [ ]:
u, v = 5., -5.
U = u + 1j*v
print(type(U))
msg = 'OO em ação mostrando números reais {0} e imaginários {1}'.format
print(msg(U.real, U.imag))
# Desafio: Calcular o vetor é o ângulo formado por u+iv.
In [ ]:
import numpy as np
np.abs(U), np.rad2deg(np.angle(U))
In [ ]:
False == 0
In [ ]:
True == 1
In [ ]:
True == 2
In [ ]:
False == 1
In [ ]:
print('Texto simples com "aspas" duplas.\n')
print("'Texto simples com 'aspas' simples.\n")
print("""Texto complexo com quebra
de linha, aspas "duplas" e 'simples'.\n""")
print(r"Texto \n 'cru', ideal para Latex $^\circ$.")
In [ ]:
text = "Um bom aluno sempre..."
text.lower(), text.split(), text.replace('aluno', 'estudante')
In [ ]:
print('O valor de pi é {:.2f}'.format(np.pi))
print('O valor de pi é {:.6f}'.format(np.pi))
print('O valor de 10 x pi é {:0.2e}'.format(10*np.pi))
In [ ]:
T = [17.4, 18.9, 19.5, 22.1, 23.2]
T[0], T[-1], T[::-1], T[::2]
In [ ]:
T[1:3]
In [ ]:
T[2:]
In [ ]:
lista = list(range(10))
print(lista)
lista.append(10)
print(lista)
lista.insert(4, 11)
print(lista)
lista.sort()
print(lista)
lista.extend(['elemento extra'])
print(lista)
In [ ]:
ctd = dict(S=[35.5, 34.76, 33.2],
T=[17.4, 18.9, 19.5],
AOU=[320, 330, 350])
ctd.keys(), ctd.values()
In [ ]:
set(['joseph', 'maria', 'pedro', 'maria'])
Direto da wikipedia:
A namespace (sometimes also called a name scope) is an abstract container or environment created to hold a logical grouping of unique identifiers or symbols (i.e., names).
O que interessa para nós?
Matlab vs Python (Namespaces)
Matlab:
w1 = window(@gausswin, N, 2.5)
% Opa! O resultados é diferente do que eu esperava. Argh, a minha função
% window está abaixo da original do Matlab no "path".
Python:
from oceans.timeseries import window
w1 = window(N, 2.5, type='gausswin')
# Sem dúvida essa era a que eu queria!
Como vocês já notaram, em Python temos que importar (declarar) tudo que vamos utilizar.
In [ ]:
import this
In [ ]:
import math
math.cos(math.pi)
In [ ]:
from math import sin, pi
sin(pi)
In [ ]:
import numpy
numpy.tanh([numpy.pi])
In [ ]:
fname = './data/CTD/estacao08.dat'
with open(fname, 'r') as f:
lines = f.readlines()
data = lines[0].strip().split()[3:]
depth = float(data[0])
lat = float(data[1])
lon = float(data[2])
print("Prof.: %s m\nLongitude: %2.4f deg\nLatitude: %2.4f deg" %
(depth, lon, lat))
In [ ]:
import os
from glob import glob
lista = glob(os.path.join('data', 'CTD', '*.dat'))
lista
In [ ]:
def break_lines(line):
return [float(num) for num in line.strip().split()]
def get_topo(url='./data/etopo5.nc'):
etopodata = Dataset(url)
topoin = etopodata.variables['ROSE'][:]
lons = etopodata.variables['ETOPO05_X'][:]
lats = etopodata.variables['ETOPO05_Y'][:]
topoin, lons = shiftgrid(180., topoin, lons, start=False)
return topoin, lons, lats
In [ ]:
depth, lat, lon = [], [], []
for fname in lista:
with open(fname, 'r') as f:
lines = f.readlines()
d, la, lo = break_lines(lines[0])[3:]
lon.append(lo)
lat.append(la)
depth.append(d)
In [ ]:
import seawater as sw
dist, angle = sw.dist(lon, lat)
dist = np.r_[0, dist.cumsum()]
In [ ]:
%matplotlib inline
import matplotlib.pyplot as plt
plt.plot(dist, depth)
plt.gca().invert_yaxis()
Matlab vs Python (loops)
Matlab
for k = 1:length(files)
files(k).name
end
Python
for fname in lista:
print("%s" % fname)