import numpy as np
mylist = [1, 2, 3] # creo una lista
x = np.array(mylist) # converto la lista in un array Numpy
y = np.array([4, 5, 6]) # creo direttamente un array Numpy
r = np.arange(36) # array con i numeri da 0 a 35
r[0] # primo elemento dell'array
r[0]=10 # cambio valore al primo elemento dell'array
r[-1] # ultimo elemento dell'array
r[1:5] # array con gli elementi dal secondo al quinto
c[3:5] = 300, 400 # cambio valore al quarto e quinto elemento
r[-4:] # ultimi 4 elementi
r[-5::-2] # parto dal quint'ultimo e vado fino in fondo di 2 in 2
m = numpy.array([1,2,3,4],[5,6,7,8]) # creo una nuova matrice
r.resize((6, 6)) # ridistribuisco r in una matrice 6x6
r[2,3] # elemento 2,3 della matrice (terza riga, quarta colonna)
r[2,3:6] # terza riga, colonne 4,5 e 6
r[:,1:3] # secondo e terzo elemento di tutte le righe
r[1,:] # tutte le colonne della seconda riga
r[:2, :-1] # tutte le righe fino alla terza (non inclusa) e tutte le colonne eccetto l'ultima
r[r > 20] # array con i soli valori di r maggiori di 20
r[r > 20] = 30 # r ma con 30 al posto dei valori maggiori di 20
n = np.arange(30)**2 # array con il quadrato dei numeri da 0 a 29
# partendo da 0 creo un array con tutti i numeri antecedenti 30 di 2 in 2 (0,2,4,...,28):
n = np.arange(0, 30, 2)
n = n.reshape(3, 5) # ridistribuisco n (1 riga) in un array 3x5
# array di 9 valori uniformemente distanziati tra 0 e 4 (0, 0.5, 1, ..., 4)
o = np.linspace(0, 4, 9)
o.resize(3, 3) # come reshape ma modifico direttamente l'array (reshape no)
np.ones((3, 2)) # creo nuovo array 3x2 di tutti 1
np.ones((2, 3), int) # specifico che sono numeri interi
np.zeros((2, 3)) # creo nuovo array 2x3 di tutti 0
np.eye(3) # array quadrato (3x3) con 1 sulla diagonale e 0 altrove
np.diag(y) # array con [4,5,6] sulla diagonale (vedi y all'inizio) e 0 altrove
np.array([1, 2, 3] * 3) # array risultante: [1,2,3,1,2,3,1,2,3]
np.repeat([1, 2, 3], 3) # array risultante: [1,1,1,2,2,2,3,3,3]
np.vstack([p, 2*p]) # prendo i due array (p e 2*p) e li unisco verticalmente
np.hstack([p, 2*p]) # prendo i due array (p e 2*p) e li unisco orizzontalmente
# Posso usare +, -, *, /, ** (potenza) direttamente sugli array
x + y # [1, 2, 3] + [4, 5, 6] = [5, 7, 9]
x + 2 # [3, 4, 5]
x * 2 # [2, 4, 6]
x - y # [-3, -3 , -3]
x * y # [4, 10, 18]
x / y # [0.25, 0.4, 0.5]
x ** 2 # [1, 4, 9]
x.dot(y) # x per y, quindi 1*4+2*5+3*6=32
len(z) # numero righe
z.T # inverto righe e colonne
z.dtype # tipo di dati degli elementi dell'array z
z = z.astype("f") # converto gli elementi di z in float
x.sum(), np.sum(x) # sommo tutti gli elementi
x.max()
x.min()
x.mean()
np.mean(r[:,0]) # media della prima colonna della matrice
x.median()
x.std() # deviazione standard
x.argmax() # posizione nell'array dell'elemento massimo (base 0)
x.argmin()
np.corrcoef(r[:,0], r[:,1]) # coefficiente di correlazione tra la prima e la seconda colonna
np.random.normal(10, 0.5, 1000) # array di 1000 numeri random con distribuzione normale, media 10, deviazione standard 0.5
z = np.array([[7, 8, 9], [10, 11, 12]]) # creo un array multidimensionale
z.shape # vedo la dimensione dell'array m (righe, colonne)
z[1][2] # elemento seconda riga e terza colonna
z[0][0,1] # array prima riga e prima e seconda colonna
z.T # matrice trasposta di z
# NB: stesso discorso delle liste di Python, se faccio:
s = r
# e poi modifico s, si modifica anche r. Per evitarlo:
s = r.copy()
# CICLO FOR SU ARRAY
test = np.random.randint(0, 10, (4,3)) # matrice con numeri da 0 a 9
# ciclo per riga:
for row in test:
print(row)
# ciclo per indice:
for i in range(len(test)):
print(test[i])
# ciclo per riga e indice:
for i, row in enumerate(test):
print('row', i, 'is', row)
# con la funzione zip posso iterare facilmente su più array:
for i, j in zip(test, test2):
print(i,'+',j,'=',i+j)
Categories
Bash
(3)
BOT
(2)
C#
(1)
Cluster Analysis
(1)
Data Cleaning
(6)
Data Ingestion
(2)
Data Science Specialization
(10)
Data Visualization
(15)
ggplot2
(1)
Hadoop
(1)
Hashnode
(3)
Machine Learning
(5)
MapReduce
(1)
Maps
(1)
Markdown
(7)
Market Basket Analysis
(1)
MATLAB
(1)
Matplotlib
(3)
Numpy
(2)
Octave
(1)
Pandas
(3)
Python
(17)
R
(22)
Regression
(7)
scikit-learn
(1)
Seaborn
(1)
Shell
(3)
Shiny App
(1)
SSIS
(3)
Statistical Inference
(2)
T-SQL
(8)
Unix
(3)
No comments:
Post a Comment