根据字典有效地替换数组中的元素-NumPyPython

根据字典有效地替换数组中的元素-NumPyPython,第1张

根据字典有效地替换数组中的元素-NumPy / Python

方法#1:循环使用数组数据

一种方法是提取数组中的键和值,然后使用类似的循环-

k = np.array(list(mapping.keys()))v = np.array(list(mapping.values()))out = np.zeros_like(input_array)for key,val in zip(k,v):    out[input_array==key] = val

与原始数据相比,此数据的好处是用于高效数据提取的数组数据的空间局部性,该空间局部性可用于迭代中。

另外,由于您提到

thousand largenp.arrays
。所以,如果
mapping
字典保持不变,这一步得到阵列版本-
k
并且
v
是一次性的安装过程。

方法2:使用

searchsorted

建议使用

np.searchsorted
-

sidx = k.argsort() #k,v from approach #1k = k[sidx]v = v[sidx]idx = np.searchsorted(k,input_array.ravel()).reshape(input_array.shape)idx[idx==len(k)] = 0mask = k[idx] == input_arrayout = np.where(mask, v[idx], 0)

方法#3:使用整数数组的映射数组进行矢量化的方法

可以使用整数数组的映射数组来建议使用向量化的数组,当由输入数组索引时,会将其直接引向最终输出-

mapping_ar = np.zeros(k.max()+1,dtype=v.dtype) #k,v from approach #1mapping_ar[k] = vout = mapping_ar[input_array]


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5630713.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存