#python #arrays #statistics #probability-density
#python #массивы #Статистика #плотность вероятности
Вопрос:
Я пытаюсь сравнить 2D-массив с произведением двух одномерных массивов (совместная плотность вероятности v.s. произведение его отдельных плотностей вероятности), чтобы определить, являются ли переменные x и y независимыми, где независимость задается как ρ(x,y)=ρ(x)*ρ(y)
.
Допустим, я вызвал 2D-массив h
, а 1D-списки n
и m
. Как бы мне выполнить итерацию h
, чтобы проверить, эквивалентны ли его элементы n*m
?
Комментарии:
1. Может быть, построить декартово произведение
n
иm
(для этого, вероятно, есть функция numpy), а затем посмотреть наh
минус этот продукт. Но если вам нужно количественно определить степень зависимости, посмотрите на взаимную информацию. Веб-поиск должен найти некоторые ресурсы.
Ответ №1:
Чтобы проверить точное равенство, просто используйте np.all()
import numpy as np
m = np.random.rand(10)
n = np.random.rand(20)
h = m.reshape(1, -1) * n.reshape(-1, 1)
print(np.all(h == m.reshape(1, -1) * n.reshape(-1, 1))) # True
Чтобы проверить, все ли числа близки, вы могли бы использовать:
print(np.all(np.isclose(h, m.reshape(1, -1) * n.reshape(-1, 1))))