Вкратце: есть similar question, и наилучший ответ предлагает использовать numpy.bincount
. Мне нужно то же самое, но для матрицы.Приращение данных индексов в матрице
У меня есть два массива:
array([1, 2, 1, 1, 2])
array([2, 1, 1, 1, 1])
вместе они составляют показатели, которые должны быть увеличен:
>>> np.array([a, b]).T
array([[1, 2],
[2, 1],
[1, 1],
[1, 1],
[2, 1]])
Я хочу, чтобы получить эту матрицу:
array([[0, 0, 0],
[0, 2, 1], # (1,1) twice, (1,2) once
[0, 2, 0]]) # (2,1) twice
Матрица будет небольшим (например, 5 × 5), а число индексов будет большим (где-то около 10^3 или 10^5).
Итак, есть ли что-нибудь лучше (быстрее), чем for
-loop?
Awesome, спасибо! – kirelagin
+1 Очень приятно. ['np.ravel_multi_index'] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.ravel_multi_index.html) может пригодиться, чтобы не думать слишком много о более сложных массивах. – Jaime
@Jaime: Удивительно, спасибо за указатель. Я искал что-то вроде «ravel_multi_index», но не нашел его. – NPE