У меня есть двумерный np-массив с числом столбцов, в 100 раз превышающим количество строк. Например, если количество строк равно 1000, количество столбцов равно 100 000, а значения являются целыми числами. Моя цель - вернуть 1000 уникальных целых чисел для каждого из 1000 индексов строк. Значения в столбце не все уникальны (могут быть дубликаты), и, следовательно, мне нужно просмотреть все значения в каждой строке, чтобы выбрать первое целочисленное значение в строке, которое еще не было выбрано в предыдущей операции. У меня есть этот воспроизводимый цикл, который отлично работает для меньших num_rows около ~ 1000. Но когда дело доходит до обработки более 10 000 строк, это мучительно медленно. Есть ли более эффективный способ справиться с этим?
import numpy as np
maxval = 5000
matrix = np.random.randint(maxval,size=(maxval, maxval*100))
neighbours = maxval - 1
indices = [] #this array will contain the outputs after the loop gets completed
for e in matrix:
i = 0
while i < neighbours:
if e[i] in indices:
i += 1
else:
indices.append(e[i])
break