
- 末尾有彩蛋
广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。
如果两个数组 a 和 b 形状相同,即满足 a.shape == b.shape,那么 a*b 的结果就是 a 与 b 数组对应位相乘。这要求维数相同,且各维度的长度相同。
实例
import numpy as np a = np.array([1,2,3,4]) b = np.array([10,20,30,40]) c = a * b print (c)
输出结果为:
1 |
[ 10 40 90 160] |
当运算中的 2 个数组的形状不同时,numpy 将自动触发广播机制。如:
实例
1 |
import numpy as np |
输出结果为:
1 |
[[ 1 2 3] |
下面的图片展示了数组 b 如何通过广播来与数组 a 兼容。

4x3 的二维数组与长为 3 的一维数组相加,等效于把数组 b 在二维上重复 4 次再运算。
yayay实例
在few-shot gnn任务中,想要计算邻接矩阵A,其公式为:aij = fc(vi-vj)
那么问题来了得到的邻接矩阵是N×N的,则计算的差值矩阵也应该是N×N的。那么该如何高效的计算出来这个差值矩阵。
import numpy as np
N = 10
D = 7
X = np.ones((N,D))
X1 = np.expand_dims(X, axis=0)
X2 = np.expand_dims(X, axis=1)
X_abs = np.abs(X1-X2)
X_abs = np.reshape(X_abs, (N,N,D))
X_T = X_abs
?????????????????需要考虑一下这个转置问题




近期评论