如何将Numpy数组有效地转化为集合? | 您所在的位置:网站首页 › flatten模板 › 如何将Numpy数组有效地转化为集合? |
你的问题的当前状态(可以随时改变):我怎样才能有效地从一个大数组中删除唯一的元素? import numpy as np rng = np.random.default_rng() arr = rng.random((3000, 30000)) out1 = list(map(np.unique, arr)) #or out2 = [np.unique(subarr) for subarr in arr]在IPython外壳中的运行时间。 >>> %timeit list(map(np.unique, arr)) 5.39 s ± 37.9 ms per loop (mean ± std. dev. of 7 runs, 1 loop each) >>> %timeit [np.unique(subarr) for subarr in arr] 5.42 s ± 58.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)更新:如@hpaulj在他的评论中指出,我的假例子是有偏见的,因为浮点随机数几乎肯定是唯一的。所以这里有一个更像生活的例子,用整数的数字。 >>> arr = rng.integers(low=1, high=15000, size=(3000, 30000)) >>> %timeit list(map(np.unique, arr)) 4.98 s ± 83.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each) >>> %timeit [np.unique(subarr) for subarr in arr] 4.95 s ± 51.3 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)在这种情况下,输出列表中的元素有不同的长度,因为有实际的重复内容需要删除。 |
CopyRight 2018-2019 实验室设备网 版权所有 |