我需要处理包含超过 1000 万个元素的多维数组。当数据大小增加时,嵌套循环无效。这是我正在使用的代码示例:
data = [[[randint(0, 100) for _ in range(100)] for _ in range(100)] for _ in range(1000)]
def process(value):
# Пример обработки данных
return value * 2
start_time = time.time()
for i in range(len(data)):
for j in range(len(data[i])):
for k in range(len(data[i][j])):
data[i][j][k] = process(data[i][j][k])
print("Время выполнения:", time.time() - start_time)
数据量大约为分布在 3D 数组 (1000 x 100 x 100) 中的 1000 万个元素。
- 用于优化处理的有趣的库和方法(焦点任务)
- 特别感兴趣的是并行处理(副任务)
Google Colab 中的 1/10 秒生成如下数据并进行处理:
列表是数学上不相关的元素的集合,因此此类操作必须通过暴力来执行。您需要使用一个库
numpy将您的数据集表示为向量,并且您可以立即对整个对象执行类似的计算。你的任务将如下所示:会非常快。
UPT
我们来测量一下。我们以两种方式测量向量的运算。如果您有机会最初将数据存储在向量中,我们将仅测量乘法运算。如果没有,我们将测量向量转换和乘法。
结果:
UPD2
纯粹出于研究目的,我决定窃取 CrazyElf 的答案并在我的硬件上进行测量以进行比较。也就是说,我们用向量生成方法来测量
numpy。这里: