Last active
June 26, 2018 15:45
-
-
Save allatambov/e1e19a21dc9a8a1969903fcbb6c1526a to your computer and use it in GitHub Desktop.
26-06
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# импортируем библиотеку | |
import numpy as np | |
# списки | |
L = [1, 2, 4, 0] | |
E = [[1, 0, 3], [3, 6, 7], []] | |
D = [[1, 3, 6], ['a', 'b', 'c']] | |
# массивы numpy | |
A = np.array(L) | |
A | |
A = np.array([1, 2, 4, 0]) | |
A | |
A = np.array(1, 2, 4, 0) | |
# работа с массивом | |
A.dtype | |
A.ndim | |
A.shape | |
A[0] | |
A[0][0] | |
A.max() | |
A.mean() | |
A.size | |
A.tolist() | |
# многомерные массивы | |
S = np.array([[8, 1, 2], [2, 8, 9]]) | |
S.ndim | |
S.max(axis=0) | |
S.max(axis=1) | |
S.shape | |
S.size | |
# обращение к элементам | |
S[0][0] | |
S[1][2] | |
# срезы | |
T = np.array([1, 3, 7], [8, 10, 1], [2, 8, 9, 5]) | |
T | |
T[0:2] | |
T[0::2] | |
# как создать массив | |
# новый из списка - через np.array | |
# новый из имеющегося массива | |
old = np.array([[2, 5, 6], [9, 8, 0]]) | |
old | |
new = old.reshape(3, 2) | |
new | |
# или из промежутка arange | |
# аналог range, но с любым шагом, в том числе дробным | |
np.arange(2, 9) | |
np.arange(2, 9, 0.5) | |
np.arange(2, 9, 0.5).reshape(2, 7) | |
# новый с нуля | |
Z = np.zeros((3, 3)) # к размерность в кортеже | |
Z | |
O = np.ones((4, 2)) | |
O | |
Emp = np.empty((3, 2)) | |
Emp | |
# изменение элементов массива | |
O[1][2] = 6 | |
O | |
# Есть массив ages. Напишите программу с циклом, которая позволит | |
# получить массив ages_bin такой же размерности, что и ages, | |
# состоящий из 0 и 1 (0 - младше 18, 1 - не младше 18) | |
# подсказка: вложенный цикл | |
ages = np.array([[12, 16, 17, 18, 14], [20, 22, 18, 17, 23], [32, 16, 44, 16]]) | |
# решение | |
shape = ages.shape | |
ages_bin = np.zeros(shape) | |
ages_bin | |
for i in range(0, shape[0]): | |
for j in range(0, shape[1]): | |
if ages[i][j] >= 18: | |
ages_bin[i][j] = 1 | |
ages_bin | |
# почему массивы numpy - это удобно | |
A ** 2 | |
A - 1 | |
def my_log(x): | |
return np.log(x + 1) | |
my_log(A) | |
# от массивов к спискам | |
ages.flatten() | |
ages.flatten()[0] | |
ages.ravel() | |
# чем еще хорош numpy | |
# вычисления | |
np.log(3) | |
np.sqrt(7) | |
np.exp(2) | |
np.mean([2, 7, 8]) | |
# операции с матрицами и векторами | |
m = np.array(np.mat('2 4; 1 6')) | |
m.T | |
m.diagonal() | |
v = np.zeros((3, 3)) | |
np.fill_diagonal(v, 1) | |
m.trace() | |
a = np.array([1, 2, 3]) | |
b = np.array([0, 4, 7]) | |
a * b | |
np.dot(a, b) | |
np.cross(a, b) | |
np.invert(m) | |
np.linalg.det(m) | |
# совмещение с matplotlib | |
x = np.linspace(10, 100, 5) # 5 breaks | |
y = x ** 2 | |
x | |
y | |
# см далее | |
# статистика | |
q = np.array([1., 0., 4.5, np.nan, 3.]) | |
np.var(q) | |
np.nanvar(q) | |
np.median(q) | |
np.nanmedian(q) | |
x = np.array([2, 6, 8, 10, 12]) | |
y = np.array([4, 7, 14, 21, 19]) | |
np.corrcoef(x, y) | |
np.corrcoef(x, y)[0][1] | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment