Я пытаюсь повторить этот код Python:
cond_entropy_x = np.array([entropy(x[y == v]) for v in uy])
Где x
и y
- векторы, а uy
- уникальные значения на y
, например 0,1
.
В порыве у меня есть:
val uy = y.distinct.collect
val condHx = for (i ← uy)
yield entropy(x.filterWithBcVariable(y)((_, yy) ⇒ yy == i))
Однако, похоже, filterWithBcVariable
не принимает все значения в y
, оно принимает только первое.
Я также пробовал:
for (i ← values) yield y.join(x).where(a ⇒ a).equalTo(_ ⇒ i)
Но мне не хватило памяти.
Как я могу отфильтровать x
по значениям y
?
Что-то вроде x.zip(y)
будет делать это, но это не поддерживается.
Есть идеи?