gpt4 book ai didi

python - 更快地获得 2 个 numpy 数组的每个元素之间的差异

转载 作者:行者123 更新时间:2023-12-04 20:50:59 25 4
gpt4 key购买 nike

我有 2 个 numpy 数组,我试图从中找出每个元素对的差异并将差异存储在矩阵中。

这是我使用的代码:

for i in range(arr1):
for j in range(arr2):
data[i,j] = float(arr1[i])-float(arr2[j])

如何优化这个循环的速度?

最佳答案

正如评论中所指出的,有多种方法可以实现您的目标。

In [1]: import numpy as np
In [6]: a = np.random.rand(1000)
In [7]: b = np.random.rand(1000)

In [9]: %timeit a - b.reshape((-1,1))
100 loops, best of 3: 2.46 ms per loop

In [10]: %timeit np.subtract.outer(a, b)
100 loops, best of 3: 2.52 ms per loop

似乎 reshape 和 subtract.outer 在速度上不相上下。但是看起来您需要转置结果才能使两种方法获得相同的结果

In [18]: a - b.reshape((-1,1)) == np.subtract.outer(a, b).T

array([[ True, True, True, ..., True, True, True],
[ True, True, True, ..., True, True, True],
[ True, True, True, ..., True, True, True],
...,
[ True, True, True, ..., True, True, True],
[ True, True, True, ..., True, True, True],
[ True, True, True, ..., True, True, True]], dtype=bool)

编辑 @PaulPanzer 提出的第二种方法似乎是最慢的。

In [27]: %timeit np.subtract(*np.ix_(a, b)); a[:, None] - b[None, :]
100 loops, best of 3: 4.99 ms per loop

关于python - 更快地获得 2 个 numpy 数组的每个元素之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43337736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com