<jupyter_start><jupyter_text>Тема “Вычисления с помощью Numpy”=================================<jupyter_code>import numpy as np
import pandas as pd<jupyter_output><empty_output><jupyter_text>Создайте массив Numpy под названием a размером 5x2, то есть состоящий из 5 строк и 2 столбцов. Первый столбец должен содержать числа 1, 2, 3, 3, 1, а второй - числа 6, 8, 11, 10, 7. Будем считать, что каждый столбец - это признак, а строка - наблюдение.<jupyter_code>arr = [
    [1, 6],
    [2, 8],
    [3, 11],
    [3, 10],
    [1, 7],
]
a = pd.DataFrame(arr)
a<jupyter_output><empty_output><jupyter_text>Затем найдите среднее значение по каждому признаку, используя метод mean массива Numpy. Результат запишите в массив mean_a, в нем должно быть 2 элемента.<jupyter_code>mean_a = a.mean(axis=0)
mean_a<jupyter_output><empty_output><jupyter_text>Вычислите массив a_centered, отняв от значений массива “а”средние значения соответствующих признаков, содержащиеся в массиве mean_a.Вычисление должно производиться в одно действие.Получившийся массив должен иметь размер 5x2.<jupyter_code>a_centered = a - mean_a
a_centered<jupyter_output><empty_output><jupyter_text>Найдите скалярное произведение столбцов массива a_centered.В результате должна получиться величина a_centered_sp.Затем поделите a_centered_sp на N-1, где N - число наблюдений.<jupyter_code>a_centered_sp = np.sum(a_centered[0] * a_centered[1])
print("a_centered_sp = {}".format(a_centered_sp))
N = a_centered[0].count()
a_centered_sp = a_centered_sp / (N-1)
print('a_centered_sp / (N-1)== {}'.format(a_centered_sp))<jupyter_output>a_centered_sp = 8.0
a_centered_sp / (N-1)== 2.0<jupyter_text>Число, которое мы получили в конце задания 3 является ковариацией двух признаков, содержащихся в массиве “а”. В задании 4 мы делили сумму произведений центрированных  признаков на N-1, а не на N, поэтому полученная нами величина  является несмещенной оценкой ковариации.  Подробнее узнать о ковариации можно здесь: https://studopedia.ru/9_153900_viborochnaya-kovariatsiya-i-viborochnaya-dispersiya.htmlВ этом задании проверьте получившееся число,вычислив ковариацию еще одним способом - с помощью функции np.cov.В качестве аргумента m функция np.cov должна принимать транспонированный массив “a”.В получившейся ковариационной матрице (массив Numpy размером 2x2)искомое значение ковариации будет равно элементу в строке с индексом 0и столбце с индексом 1.<jupyter_code>cov = np.cov(a.transpose())
print('cov == {}'.format(cov))

cov[1, 0] == a_centered_sp<jupyter_output>cov == [[1.  2. ]
 [2.  4.3]]
{'fraction_non_alphanumeric': 0.10613207547169812, 'fraction_numerical': 0.025157232704402517, 'mean_word_length': 6.030386740331492, 'pattern_counts': {'":': 0, '<': 23, '<?xml version=': 0, '>': 23, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '6', 'dir': 'jupyter-structured-clean-dedup', 'id': '609910', 'license': 'MIT', 'n_tokens_mistral': 1122, 'n_tokens_neox': 1231, 'n_words': 253, 'path': 'unit1/task2_1.ipynb', 'repo_name': 'Haikson/PythonDS', 'size': '2544'}