Объединение похожих столбцов в NumPy, вектор вероятности - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть массив numpy следующей формы: img1

Это вектор вероятности, где вторая строка соответствует значению, а первая строка - вероятности того, что это значение реализовано. (например, вероятность получения 1,0 составляет 20%)

Когда два значения близки друг к другу, я хочу объединить их столбцы, сложив вероятности. В этом примере я хочу получить: img2

Мое текущее решение включает в себя 3 цикла и работает очень медленно для больших массивов. Кто-нибудь знает эффективный способ запрограммировать это в NumPy?

1 Ответ

0 голосов
/ 05 февраля 2020

Хотя это не будет делать именно то, что вы хотите, вы можете попытаться использовать np.histogram для решения проблемы.

Например, скажем, вы просто хотите две "корзины", как в вашем примере вы могли бы сделать

import numpy as np

x = np.array([[0.1, 0.2, 0.6, 0.1], [0.0, 1.0, 0.0, 1.01]])
hist, bin_edges = np.histogram(x[1, :], bins=[0, 1.0, 1.5], weights=x[0, :])

и затем сложить свою гистограмму с ведущими краями бина, чтобы получить ваш вывод

print(np.stack([hist, bin_edges[:-1]]))

Это выведет

[[0.7 0.3]
 [0.  1. ]]

Вы можете использовать параметр bins, чтобы получить желаемый результат. Надеюсь, это поможет.

...