注:以下运算的对象a, b, c均为numpy.ndarray,并称其为numpy数组,简称数组
单个数组运算 a.shape = (4, 6)
-
a.sum(axis=0) :纵向求和,返回数组的shape为(6)
-
a.sum(axis=1):横向求和,返回数组的shape为(4)
-
a.sum():求和,返回数组所以元素的和
-
a+2, a-2, a*2, a/2, a%2, a//2, a**2:对数组的每个元素进行相应的运算操作
-
a.T:转置
两个数组运算
-
a+b:a、b形状相同,同位置的元素相乘,返回同型数组。其他算术操作符(+, -, *, /, //, %)同理
-
np.dot(a, b) :按矩阵运算法则
-
np.vdot(a, b):先将a、b展开成行向量,再计算向量的数量积
数组自动扩展及变形a.shape=(4, 6), b.shape=(4, 1), c.shape=(1, 6), d.shape=(6,)
-
a+b:a的每一列与b相加,其他的算术运算符(+, -, *, /, //, %)同理
-
a+c:a的每一行与c相加,其他的算术运算符(+, -, *, /, //, %)同理
-
np.dot(a, d):效果同np.dot(a, d.reshape(6, 1))
三维数组运算
- 在实现机器学习算法的时候,为了优化运算速度,需要将运算向量化,也就是要用到这里的数组运算,有时会出现三维数组的运算。
x = [[[1, 1, 1]],
[[2, 2, 2]]]
a = np.array(x)
w = np.array(x)+1
z = np.array([np.dot(m.T, n) for m, n in zip(a, b)])
z
z.sum(axis=0)/2
array([[[2, 2, 2],
[2, 2, 2],
[2, 2, 2]],
[[6, 6, 6],
[6, 6, 6],
[6, 6, 6]]])
array([[ 4., 4., 4.],
[ 4., 4., 4.],
[ 4., 4., 4.]])
- 这里是简单模拟a、w在每一层上求点积,得到的结果在深度方向上求平均,在神经网络算法中求权重的梯度时经常用到。
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。