Я ищу эффективное решение для обхода цикла, которое решает проблему, связанную с массивами. Я хочу использовать огромный 1Darray (A -> size = 250.000)
значений от 0 до 40 для индексации в одном измерении и массив (B) того же размера со значениями от 0 до 9995 для индексации во втором измерении.
Результатом должен быть массив с размером (41, 9996), в котором для каждого индекса указано, сколько раз любое значение из массива 1 встречается со значением из массива 2.
Пример:
A = [0, 3, 2, 4, 3]
B = [1, 2, 2, 0, 2]
which should result in:
[[0, 1, 0,
[0, 0, 0,
[0, 0, 1,
[0, 0, 2,
[1, 0, 0]]
Грязный путь слишком медленный, так как объем данных огромен, что вы могли бы сделать:
out = np.zeros(41,9995)
for i in A:
for j in B:
out[i,j] += 1
, что займет 238 000 * 238 000 циклов ... Я пробовал это, который работает частично:
out = np.zeros(41,9995)
out[A,B] += 1
, который генерирует результат с 1 везде, независимо от того, сколько раз встречаются значения.
Кто-нибудь знает, как это исправить? Заранее спасибо!