我正在处理大型(掩码)2D NumPy数组,这些数组来自全国范围的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
循环?
2条答案
按热度按时间xoshrz7s1#
您可以使用一个简单的
igetnqfo2#
您可以通过
[:]
选择所有值来修改数组: