⚙️ Итак, продолжаем)
▫️Массив из нулей 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
Что возвращает np.linspace(0, 10, 5)?
Anonymous Quiz
13%
Массив из чисел [0, 2, 4, 6, 8]
50%
Массив из чисел [0, 2.5, 5, 7.5, 10]
38%
Массив из чисел [0, 5, 10, 15, 20]
❤🔥2🤯1
Какой результат вернёт np.arange(5, 15, 2)?
Anonymous Quiz
88%
Массив из чисел [5, 7, 9, 11, 13]
0%
Массив из чисел [5, 10, 15]
0%
Массив из чисел [5, 15, 25]
13%
Массив из чисел [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
❤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]
❤🔥2❤1
Что вернёт команда np.ones((2, 3)) * 0?
Anonymous Quiz
0%
Массив [0, 0, 0]
29%
Массив [1, 1, 1, 1, 1, 1]
57%
Массив [[0, 0, 0], [0, 0, 0]]
14%
Ошибка кода
❤🔥2❤1
🧑💻Продолжаем обучаться 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
Всем доброй ночи, гайс! Надеюсь, вы хорошо проведете свои выходные 😋
🔗 Для того, чтобы изображать любые линейные графики, диаграммы, и даже трехмерную визуализацию, придумали 🟰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
🔗 Для начала, что такое норма?
Норма — это способ измерить "размер", "длину" или "величину" объекта. Для векторов норма показывает их длину в пространстве, а Для матриц норма измеряет их размер
В коде я указывал функцию 🟰
np.linalg.norm🟰 — из библиотеки NumPy вычисляет норму вектора или матрицы. На фотаче представлены как раз основные нормы, которые мы сейчас и рассмотрим:1️⃣ Максимальная норма (ord = ∞)
Наибольшее значение суммы абсолютных значений строки.
A = np.array([[1, -2], [3, -4]])
print(np.linalg.norm(A, ord=np.inf))
# Вывод: 7 (максимальная сумма по строкам)
🔗 Кароч, че это значит: есть матрица A = [1 -2] и нижняя строка [3 -4], то для первой строки сумма модуля будет 3, для второй 7 → максимальная сумма (среди модулей) равна 7
Кстати, 🟰
np.inf🟰 это представление бесконечности (от infinity)Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥2❤1
2️⃣ Евклидова норма (по умолчанию, ord = 2)
🔗 Это стандартная длина вектора или "величина" матрицы, мы разбирали ее → тут
import numpy as np
v = np.array([3, 4])
print(np.linalg.norm(v, ord=2))
# Вывод: 5.0 (гипотенуза треугольника 3-4-5)
▫️Прикол в том, что код будет выводить такой же результат — 5.0
🔗 Что делает ord=2? Кароч, ord=2 говорит функции 🟰
np.linalg.norm🟰, что мы хотим найти L2-норму (она по умолчанию стоит. но по-хорошему ее надо указывать для точности). 🔗 |v| = √u²₁, u²₂ u²₃ + ... + u²ₓ — По сути, это стандартная длина вектора в пространстве. Если представить вектор [3,4] как точку в 2D-пространстве, его длина — это расстояние от начала координат (0,0) до точки (3,4
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1❤🔥1🤯1
3️⃣ Манхэттенская норма (ord = 1) (L1-норма)
|x|₁ = |x₁| + |x₂| + ... + |xₙ| — для векторов
🔗 Для матриц:
A = np.array([[1, -2], [3, -4]])
print(np.linalg.norm(A, ord = 1))
# Вывод: 6.0 (максимальная сумма по столбцу)
▫️Кароч, че тут происходит: функция вычисляет сумму абсолютных значений каждого столбца и возвращает максимальную сумму (Первый столбец — [1, 3] → складываем и получаем 4, второй столбец — [−2,−4] → складываем модули и получаем 6 → Максимальная сумма — 6
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥2❤1🤯1