查看“广播机制:通过扩展实现数组运算”的源代码
←
广播机制:通过扩展实现数组运算
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
== numpy数组的广播机制 == *注意numpy里数组之间的运算和线性代数中的矩阵运算是不一样的 *同纬度和形状的数组之间就是同位置的元素两两匹配运算的结果 ---- <br>import numpy as np <br>a=np.array([[ 1., 2., 1.], [ 1., 2., 1.]]) <br>b=np.array([[ 1., 2., 3.], [ 1., 2., 3.]]) <br>print(a.shape,b.shape) <br>>>>(2, 3) (2, 3) <br>print(a+b) <br>>>>array([[ 2., 4., 4.],[ 2., 4., 4.]]) <br>print(a*b) <br>>>>array([[ 1., 4., 3.],[ 1., 4., 3.]]) <br>print(a-b) <br>>>>array([[ 0., 0., -2.],[ 0., 0., -2.]]) <br>print(a**b) <br>>>>array([[ 1., 4., 1.],[ 1., 4., 1.]]) ---- *当两个数组其中一个的维度少于另外一个的时候 少的数组在某一个轴(或是多个轴)的方向缺失数据,缺数据的那个方向只能有1个元素(或是一行,一面)作为复制蓝本,然后依照轴的方向复制,复制数由多的那个数组的大小决定 *注意:如果是列和行其中之一有空缺是可以通过复制来运算的。 但是蓝本不能有缺或者多,即行和列都不完整。 ---- a=np.array([[ 1., 2., 1.], [ 1., 2., 1.], [ 1., 2., 1.]]) b=np.array([[3.], [2.], [1.]]) print(a+b) [[ 4. 5. 4.] [ 3. 4. 3.] [ 2. 3. 2.]] #当数组就只有一个元素的时候,那么其实和常数就没什么区别了 a=np.array([[ 1., 2., 1.], [ 1., 2., 1.], [ 1., 2., 1.]]) b=np.array([[3.]]) print(a+b) [[ 4. 5. 4.] [ 4. 5. 4.] [ 4. 5. 4.]] ---- 高维数组的运算 无论在多少个方向上缺失数据,只要能通过复制解决就可以运算,复制只能依据1个副本,不能有多个副本 Image("2.png") a=np.array([[[ 1., 2., 1.], [ 1., 2., 1.], [ 1., 2., 1.]], [[ 1., 2., 1.], [ 1., 2., 1.], [ 1., 2., 1.]]]) b=np.array([[ 3., 2., 1.], [ 3., 2., 1.], [ 3., 2., 1.]]) print(a+b) [[[ 4. 4. 2.] [ 4. 4. 2.] [ 4. 4. 2.]] [[ 4. 4. 2.] [ 4. 4. 2.] [ 4. 4. 2.]]] a=np.array([[[ 1., 2., 1.], [ 1., 2., 1.], [ 1., 2., 1.]], [[ 1., 2., 1.], [ 1., 2., 1.], [ 1., 2., 1.]]]) b=np.array([[ 3.], [ 3.], [ 3.]]) print(a+b) [[[ 4. 5. 4.] [ 4. 5. 4.] [ 4. 5. 4.]] [[ 4. 5. 4.] [ 4. 5. 4.] [ 4. 5. 4.]]] a=np.array([[[ 1., 2., 1.], [ 1., 2., 1.], [ 1., 2., 1.]], [[ 1., 2., 1.], [ 1., 2., 1.], [ 1., 2., 1.]]]) b=np.array([[ 5.,6,7]]) print(a+b) [[[ 6. 8. 8.] [ 6. 8. 8.] [ 6. 8. 8.]] [[ 6. 8. 8.] [ 6. 8. 8.] [ 6. 8. 8.]]]
返回至
广播机制:通过扩展实现数组运算
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息