Я имею дело с большими (замаскированными) двумерными массивами, которые берутся из наборов растровых данных по всей стране с разрешением от 10 до 200 метров.Массивы очень большие и могут содержать несколько миллионов значений.
Я хотел бы выполнить следующие операции над этими типами массивов наиболее эффективным способом:
in_array = numpy.array([[1,2,2],[4,4,6]])
out_array = uniqify(in_array)
print(out_array)
>>>
numpy.array([[1,2,3],[4,5,6]])
или некоторымидругая комбинация чисел.Это действительно не имеет значения, меня беспокоит то, что в массиве НЕТ повторяющихся значений.Каждое значение ячейки должно быть уникальным, и величина ячейки не должна иметь значения.
Это один из способов сделать это, но я боюсь, что оно может серьезно сломаться для больших наборов данных:
def uniqify(array):
count = 0
for i in range(array.shape[0]):
for j in range(array.shape[1]):
array[i][j]= count
count = count+1
return array
array = np.array([[100,2,3],[4,5,5,],[4,8,7]])
uniqified = uniqify(array)
print(uniqified)
Интересно, есть ли готовые, эффективные в вычислительном отношении методы, позволяющие сделать это без использования вложенных циклов for
?
Спасибо