我有两个numpy数组,看起来像这样:
x = [v1, v2, v3, ..., vm]
y = [w1, w2, w3, ..., wn]
其中vi, wj
是长度为3的numpy数组。
我想对v和w进行两两求和,得到最终的数组
z = [v1+w1, v1+w2,...,v1+wn,v2+w1, ..., vi+wj, ..., vm+wn]
获得z
的简单方法如下:
z = np.zeros ((m*n, 3))
for i in range(m):
for j in range(n):
z[n*i+j] = x[i] + y[j]
这种计算是不可行的,因为m, n
都很大。
我知道scipy.spatial有一些方法可以使用distance_matrix以矢量化的方式枚举成对距离。
我想问一下,对于numpy数组,是否有执行这种成对 * 加法 * 的向量化版本?
2条答案
按热度按时间u5rb5r591#
你可以利用广播,创建一个二维数组,然后你可以很容易地得到
z[i,j] = x[i] + y[j]
如果你想把z作为一个一维数组,你可以做
z.reshape(-1)
。mf98qq942#
如果x是mx3矩阵,则y是nx3
等价地
测试者: