快学numpy03
来源:互联网 发布:阿里云rds数据库集群 编辑:程序博客网 时间:2024/06/06 03:25
博客地址:http://www.fanlegefan.com
文章地址:http://www.fanlegefan.com/archives/quicknumpy03/
broadcasting
执行 broadcast 的前提在于,两个 ndarray 执行的是 element-wise(按位加,按位减) 的运算,而不是矩阵乘法的运算,矩阵乘法运算时需要维度之间严格匹配,当两个array进行broadcasting操作时,numpy首先会比较他们的shape,在以下两种情况下,broadcasting才是合法的
1.两个array具有相同的shape
2.其中的一个array的shape为1,(进而可进行拷贝拓展已至,shape匹配)
比如:
Image (3d array): 256 x 256 x 3Scale (1d array): 3Result (3d array): 256 x 256 x 3A (4d array): 8 x 1 x 6 x 1B (3d array): 7 x 1 x 5Result (4d array): 8 x 7 x 6 x 5A (2d array): 5 x 4B (1d array): 1Result (2d array): 5 x 4A (2d array): 15 x 3 x 5B (1d array): 15 x 1 x 5Result (2d array): 15 x 3 x 5
栗子:
v = np.array([1,2,3])w = np.array([4,5])print(v.shape, w.shape)v = v.reshape(3,1)print(v.shape)print v+wa = np.arange(70).reshape(7,1,5,2)b = np.arange(20).reshape(4,5,1)# print a+ba = np.arange(630).reshape(7,1,5,2,9)b = np.arange(20).reshape(4,5,1,1)# print a+b# print b+ax = np.array([[1,2,3], [4,5,6]])v = np.array([1,2,3])print x + vx = np.array([[1,2,3], [4,5,6]]) # (2,3)w = np.array([4,5]).reshape(2,1) # (2,)print x+wprint np.array([4,5]).shape
原理图如下
总结下:如何判断两个数组a,b是否能够进行相加,a.shape(7,1,5,2,9),b.shape (4,5,1,1),让两个数组shape右对齐,逐个比对shape tuple里面的值,如果不等则必须有一个是1,否则不能够相加
阅读全文
0 0
- 快学numpy03
- 快学Scala
- 快学Hibernate
- 《快学scala》代码
- 快学scala笔记.
- 快学Big Data
- 快学Scala-基础
- 快学BigData目录
- 《快学Scala》勘误
- 快学numpy01
- 快学numpy02
- 快学numpy04
- java学的快忘得快
- 快学scala(1 - 5)
- 快学Scala--第一章习题
- 快学scala:笔记1
- 快学scala:笔记2
- 快学scala:笔记3
- Android URL encode 空格处理
- error LNK2005 LNK2001
- AngualrJS(九)css类和样式2
- FPS手游如何脱颖而出?看《CF手游》的性能突破之路
- HDU
- 快学numpy03
- 函数指针(function pointer)
- [BZOJ1588]营业额统计
- HTML5-Less-Sass-swiper
- 迭代修正算法
- 数据的离散化-lower_bound
- css鼠标放上去显示外框
- Exception:Establishing SSL connection without server's identity verification is not recommended
- C#操作SQL Server数据库