CodeLab
145 subscribers
538 photos
20 videos
159 links
Говорим просто о сложном

Обсуждение, новости, материал и сплетни — все здесь https://t.me/CodeLabMLChat
Download Telegram
Н А В И Г А Ц И Я П О N U M P Y
_______________________

🧑‍💻 Ну что гайс, стоять на одном месте никак нельзя, поэтому начинаем изучать NumPy
❤‍🔥2
_______________________

https://habr.com/ru/articles/469355/#p3

🔗 Очень полезная статья для ознакомления, а завтра будет полноценный пост, так что ждите гайс⚙️
❤‍🔥2🤓1
ВЕРНУТЬСЯ К НАВИГАЦИИ

⚙️ Итак, для начала, чтобы работать с библиотекой, нам нужно ее подключить:

import numpy as np


▫️np — это просто сокращение для нашей библиотеки, теперь нам будет куда проще обращаться к методам библиотеки

◾️ Чтобы создать массив, достаточно просто объявить переменную, пусть будет 🟰s 🟰 и использовать встроенную функцию 🟰array🟰

import numpy as np
s = np.array([1, 2, 3, 4, 5])
print(s) #Вывод: [1 2 3 4 5]


▫️Вот еще пример того, как мы можем создать одномерный, двумерный, трёхмерный и другие массивы:

import numpy as np
s = np.array([1, 2, 3, 4, 5])
s_1 = np.array([[1, 2, 3], [4, 5, 6]])
s_2 = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
print(s)
print(s_1)
print(s_2)


🔗 Вывод:

[1 2 3 4 5]
[[1 2 3]
[4 5 6]]
[[[ 1 2 3]
[ 4 5 6]]

[[ 7 8 9]
[10 11 12]]]


_______________________

▫️Создание массива из нулей указанной формы:

import numpy as np


zeros_array = np.zeros((3, 3))
print("Массив из нулей:\n", zeros_array)


Продолжение будет совсем скоро...

ВЕРНУТЬСЯ К НАВИГАЦИИ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2🤓1
ВЕРНУТЬСЯ К НАВИГАЦИИ

⚙️ Итак, продолжаем)


▫️Массив из нулей 3x3:

zeros_array = np.zeros((3, 3))
print("Массив из нулей:\n", zeros_array)


▫️Массив из единиц 2x4:

ones_array = np.ones((2, 4))
print("Массив из единиц:\n", ones_array)


▫️Массив 2x3, заполненный числом 7:

full_array = np.full((2, 3), 7)
print("Массив, заполненный семёрками:\n", full_array)


◼️ Кстати, в NumPy-массивы можно передавать не только целые числа, но и дробные:

s = np.array([1.4, 2.5, 3.7])

print(s)
# [1.4 2.5 3.7]


ВЕРНУТЬСЯ К НАВИГАЦИИ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2🤓1
ВЕРНУТЬСЯ К НАВИГАЦИИ

Гайс, всем ку! Даже не думайте, что я про вас забыл, да, скопилось очень много, но опускать руки никак нельзя! Надеюсь, вы меня понимаете ❤️


▫️Массив от 0 до 10 с шагом 2

np.arange(start, stop, step) — создаёт массив с числами от start до stop с шагом step


import numpy as np
s_array = np.arange(0, 10, 2)
print("Массив с шагом:\n", s_array)

#[0 2 4 6 8]


▫️ Массив из 10 значений от 0 до 2

np.linspace(start, stop, num) — создаёт массив из num равномерно распределённых чисел от start до stop


import numpy as np
l_array = np.linspace(0, 2, 10)
print("Равномерно распределённые значения:\n", l_array)

# [0. 0.22222222 0.44444444 0.66666667 0.88888889 1.11111111
# 1.33333333 1.55555556 1.77777778 2. ]


ВЕРНУТЬСЯ К НАВИГАЦИИ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2🤓1
🔗 Го пройдем несколько тестиков на закрепление знаний ↓
❤‍🔥1🤓1
Какой массив создаёт команда np.linspace(1, 10, 4)?
Anonymous Quiz
14%
[1.0, 2.0, 3.0, 4.0]
0%
[1.0, 3.0, 5.0, 10.0]
71%
[1.0, 4.0, 7.0, 10.0]
14%
[1.0, 5.5, 10.0]
❤‍🔥21
❤‍🔥21
ВЕРНУТЬСЯ К НАВИГАЦИИ

🧑‍💻Продолжаем обучаться ML...


0️⃣🔗 В NumPy-массивы можно передавать не только целые числа, но и дробные:

import numpy as np
b = np.array([1.7, 2.3, 5.7])

print(b)
#[1.7 2.3 5.7]


1️⃣ Мы можем указать конкретный тип с помощью дополнительного параметра 🟰dtype🟰:

import numpy as np
c = np.array([1, 2, 3], dtype='float32')

print(c)
# [1. 2. 3.]


Числа int32 занимают 32 бита, или 4 байта, а int16 — 16 бит, или 2 байта. Программисты используют параметр dtype, когда точно знают, что их переменные будут находиться в диапазоне от −32 768 до 32 767.


⁉️ Почему диапазон от −32768 до 32767

В 16-битной системе каждое число хранится в 16 битах, один бит используется для хранения знака числа: 0 — положительное, 1 — отрицательное. Оставшиеся 15 бит используются для представления числового значения —2¹⁵ = 32,768

🔗 Отсюда:

Минимальное значение: -32,768,
Максимальное значение: 32,767


ВЕРНУТЬСЯ К НАВИГАЦИИ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥3
ВЕРНУТЬСЯ К НАВИГАЦИИ

🔗 Разберем код:

0️⃣ Подключим библиотеку и и объяви переменные:

import numpy as np
a = np.int16(32000)
b = np.int16(768)


▫️Переменная a имеет значение 32,000, что близко к верхней границе диапазона int16.

▫️Переменная b имеет значение 768.

1️⃣ Сложение с переполнением:

result = np.int16(a + b)


▫️Математически у нас все выполняется (32000+768=32768), но, но, есть больное но! максимальное значение для int16 — 32,767.

▫️Результат 32,768 превышает этот предел, поэтому происходит переполнение.

▫️Теперь самое главное:

Завтра...

ВЕРНУТЬСЯ К НАВИГАЦИИ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2👨‍💻1
ВЕРНУТЬСЯ К НАВИГАЦИИ

⚙️ В прошлом посте мы остановились на том, что происходит переполнение...

▫️int16 — это 16-битный целый тип данных

▫️Один бит используется для знака числа (0 — положительное, 1 — отрицательное)

◻️ Из этих двух предложений следует, что диапазон значений: от -32,768 до 32,767 (На вопрос, что это за цифры и почему они такие, я отвечал несколько постов назад)

▫️Дак вот, результат у нас был именно 32,768, что превышает верхнюю границу диапазона (32,767) или выходит за нижнюю границу (-32,768)

Почему так ⁉️

‼️ Число (32,767) в двоичной системе:
0111 1111 1111 1111.


‼️ Если мы прибавим 1, получим 1000000000000000. И как раз наш int16 интерпретирует это как -32,768, так как старший бит стал равен 1


результат не помещается в 16 бит, и его старший бит становится "знаковым", что интерпретируется как отрицательное значение.


ВЕРНУТЬСЯ К НАВИГАЦИИ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2🤯1
🧑‍💻 Завтра начнем разбирать такую крутую штуку гайс
❤‍🔥2👨‍💻1
ВЕРНУТЬСЯ К НАВИГАЦИИ

Всем доброй ночи, гайс! Надеюсь, вы хорошо проведете свои выходные 😋


🔗 Для того, чтобы изображать любые линейные графики, диаграммы, и даже трехмерную визуализацию, придумали 🟰Matplotlib🟰

⚙️ Импорт библиотеки и все такое мы уже с вам знаем:

from matplotlib import pyplot as plt
# or
import matplotlib.pyplot as plt


🧑‍💻 Сейчас пробежим по основным функциям, а завтра напишем полноценный код:

0️⃣ plot() 


▫️Строит линейный график (line plot)
▫️Принимает массивы значений для осей X и Y

🔗 Пример кода:

import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [10, 20, 25, 30]
plt.plot(x, y, label="График 1", color="blue", linestyle="--")
plt.legend()
plt.show()



1️⃣ scatter()


▫️Строит точечную диаграмму

🔗 Пример кода:

x = [5, 7, 8, 7, 2]
y = [99, 86, 87, 88, 100]
plt.scatter(x, y, color="red", marker="o")
plt.show()


2️⃣ bar()


▫️Создаёт столбчатую диаграмму

🔗 Пример кода:

categories = ['A', 'B', 'C', 'D']
values = [4, 7, 1, 8]
plt.bar(categories, values, color="green")
plt.show()


ВЕРНУТЬСЯ К НАВИГАЦИИ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥1👍1🤯1🤓1
ВЕРНУТЬСЯ К НАВИГАЦИИ

from matplotlib import pyplot as plt

x = [1, 2, 3, 4] # координаты по оси X
y = [10, 20, 25, 30] # координаты по оси Y
plt.plot(x, y, label = 'График 1', color = 'blue', linestyle = '--') # Строит линейный график на основе данных
plt.legend() # Добавляет легенду на график
plt.show() # Показывает график в новом окне


ВЕРНУТЬСЯ К НАВИГАЦИИ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2👍1🤯1
ВЕРНУТЬСЯ К НАВИГАЦИИ

from matplotlib import pyplot as plt
x = [1, 2, 3, 4, 5, 6]
y = [11 ,22, 33, 44, 55, 66]

plt.scatter(x, y, color = 'red', label = 'График 2', marker = 'o') # создаёт точечную диаграмму, цвет точек, форму маркера
plt.legend()
plt.show()


ВЕРНУТЬСЯ К НАВИГАЦИИ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2👍1🤯1
ВЕРНУТЬСЯ К НАВИГАЦИИ

from matplotlib import pyplot as plt
categories = ['A', 'B', 'C', 'D', 'E']
values = [4, 7, 1, 9, 12]
plt.bar(categories, values, label = 'График 3', color = 'green')
plt.legend()
plt.show()


ВЕРНУТЬСЯ К НАВИГАЦИИ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2👍1🤯1
ВЕРНУТЬСЯ К НАВИГАЦИИ

from matplotlib import pyplot as plt
sizes = [15, 30, 45, 10]
labels = ['A', 'B', 'C', 'D']
plt.pie(sizes, labels = labels, autopct = '44%%', startangle = 140)
plt.legend()
plt.show()


ВЕРНУТЬСЯ К НАВИГАЦИИ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2👍1🤯1
ВЕРНУТЬСЯ К НАВИГАЦИИ

from matplotlib import pyplot as plt
data = [1, 2, 2, 3, 3, 3, 4, 4, 5]
plt.hist(data, bins = 5, color = 'blue', alpha = 0.7)
plt.show()


ВЕРНУТЬСЯ К НАВИГАЦИИ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2👍1🤯1
ВЕРНУТЬСЯ К НАВИГАЦИИ

🧑‍💻 Йоу воссап, друзья, потихонечку помаленечку мы продвигаемся. Но нам нельзя никак останавливаться, поэтому предлагаю заняться чем то серьезным, а именно — векторы, матрицы и вся эта сложная штука...

🔗 Итак, начнем конечно же с векторов, базу знать нам необходимо...

▫️Че такое этот ваш вектор? Это объект (математический), который имеет длину (модуль, мера его размера) и направление (ориентация в пространстве)

v = [u₁, u₂ u₃] — вот пример вектора в трехмерном пространстве

Как найти его длину (модуль) ?

|v| = √u²₁, u²₂ u²₃ + ... + u²ₓ

Например:

Если v = [3, 4], то v = 9 + 16 = 5 (я надеюсь, вы поняли че мы сделали, просто в формулу вставьте числа)

Для векторов функция numpy.linalg.norm вычисляет длину (или величину) вектора. По умолчанию она использует Евклидову норму (L2-норма):


import numpy as np
vp = np.array([3, 4])
length = np.linalg.norm(vp)
print(length)
# 5.0


🔗 Касаемо Евклидовой нормы, мы рассмотрим это дальше, пока не надо париться...

ВЕРНУТЬСЯ К НАВИГАЦИИ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2🤯1🤓1