Сравнить элементы 2D-массива с произведением двух одномерных массивов?

#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))))