numpy.core.memmap.memmap
我有两个名为data
and的大型数组new_data
,其中包含 > 700 万个 float32 项。
我需要在我目前正在这样做的同一个循环中对它们进行迭代。
for i in range(0,len(data)):
if new_data[i] == 0: continue
combo = ( data[i], new_data[i] )
if not combo in new_values_map: new_values_map[combo] = available_values.pop()
data[i] = new_values_map[combo]
然而,这是不合理的慢,所以我认为使用 numpy 的矢量化函数是要走的路。
是否可以使用索引进行矢量化 - 以便矢量化数组可以将其项目与另一个数组中的相应项目进行比较?
我想过压缩这两个数组,但我想这会导致准备工作不合理的开销?
还有其他方法可以优化此操作吗?
对于上下文:目标是有效地合并两个数组,以便两个数组之间对应值的每个唯一组合由结果数组中的不同值表示,除了 new_data 数组中的零被忽略。数组代表 3D 位图图像。
编辑:available_values
是一组尚未使用的值,data
并且在对该循环的调用中持续存在。new_values_map
另一方面,在每次使用此循环之前将其重置为空字典。
EDIT2:数据数组只包含整数,即:它被初始化为零,然后每次使用这个循环时都会使用不同new_data
的值填充更多的值,available_values
这些值最初是一个整数范围。new_data
理论上可以是任何东西。