我有两个向量,v1
和 v2
。我想从 v1
的每个值中减去 v2
的每个值,并将结果存储在另一个向量中。我也想使用非常大的向量(例如 1e6 大小),所以我认为我应该使用 numpy 来提高性能。
到目前为止,我有:
import numpy
v1 = numpy.array(numpy.random.uniform(-1, 1, size=1e2))
v2 = numpy.array(numpy.random.uniform(-1, 1, size=1e2))
vdiff = []
for value in v1:
vdiff.extend([value - v2])
这将创建一个包含 100 个条目的列表,每个条目都是一个大小为 100 的数组。不过我不知道这是否是最有效的方法。 我想用尽可能小的对象大小(内存方面)非常快速地计算 1e4 所需值。
最佳答案
您不会从您提到的巨型数组中获得太多乐趣。但是,如果您有更合理大小的矩阵(小到足以将结果放入内存),最好的方法是使用 broadcasting。 .
import numpy as np
a = np.array(range(5, 10))
b = np.array(range(2, 6))
res = a[None, :] - b[:, None]
print(res)
# [[3 4 5 6 7]
# [2 3 4 5 6]
# [1 2 3 4 5]
# [0 1 2 3 4]]
关于python - 从两个数组中减去所有值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26076576/