numpy 不同形状(shape)的数组数值计算方式

numpy 不同形状(shape)的数组数值计算方式
1.如果两个数组 a 和 b 形状相同,即满足 a.shape == b.shape,那么 a*b 的结果就是 a 与 b 数组对应位相乘。这要求维数相同,且各维度的长度相同。 

	    import numpy as np
	    a = np.array([1, 2, 3, 4])
	    b = np.array([5, 6, 7, 8])
	    c = a * b
	    print(c)   # [1*5,2*6,3*7,4*8]
	    # 结果 [ 5 12 21 32]

2.当运算中的 2 个数组的形状不同时,numpy 将自动触发广播机制。如: 

	    import numpy as np 
	     
	    a = np.array([[ 0, 0, 0],
	               [10,10,10],
	               [20,20,20],
	               [30,30,30]])
	    b = np.array([1,2,3])
	    print(a + b)
	    
	    # 结果:(原理往下看)
	    	'''[[ 1  2  3]
	     		[11 12 13]
	    		[21 22 23]
	     		[31 32 33]]'''

4x3 的二维数组与长为 3 的一维数组相加,等效于把数组 b 在二维上重复 4 次再运算:

下面的图片展示了数组 b 如何通过广播来与数组 a 兼容。
在这里插入图片描述
具体下边可表示
import numpy as np
a = np.array([[ 0, 0, 0], [10,10,10], [20,20,20], [30,30,30]])
b = np.array([1,2,3])
bb = np.tile(b, (4, 1))
print(a + bb)

		    # 结果:
		    """[[ 1  2  3]
		     	[11 12 13]
		     	[21 22 23]
		     	[31 32 33]]"""

3.numpy.tile(A,代表)
通过重复A代表给出的次数来构造数组
tile怎么执行的,有两个要点
(1)比较数组维度d和元组维度reps,如果d<reps,在需要时对数组补中括号 [] 来增加维度。 (2)元组数字从右到左,数组维度从最深维度到最低维度。假设元组为(a,b,c,d,e,f),则数组最深维度重复f次;然后次深维度重复e次;接着次次深维度重复d次;再然后次次次深维度重复c次…… 以此类推,直到对最低维度重复a次,结束,得到结果

		    import numpy as np
		    a = np.array([0, 1, 2])
		    b = np.tile(a,2)
		    print(b)
		    print('***********************')
		    c = np.tile(a, (2, 1))     
		    print (c)
		    print('***********************')
		    d = np.tile(a, (2, 2, 1))      # 具体计算过程见下
		    print(d)
		    print('***********************')
		    e = np.array([[1, 2], [3, 4]])
		    f = np.tile(e, 2)        
		    print(f)
		    print('***********************')
		    g = np.tile(e, (2, 1))    
		    print(g)
		    print('***********************')
		    h = np.array([1,2,3,4])
		    i = np.tile(h,(4,1))      
		    print(i)
		    
		    # 结果
		      b =   [0 1 2 0 1 2]
		        ***********************
		      c =  [[0 1 2 0 1 2]
		         	[0 1 2 0 1 2]]
		        ***********************
		       d =  [[[0 1 2]
		      		[0 1 2]]
		    	 	[[0 1 2]
		      		[0 1 2]]]
		        ***********************
		       f = [[1 2 1 2]
		           [3 4 3 4]]
		        ***********************
		      	g = [[1 2]
		             [3 4]
		             [1 2]
		             [3 4]]
		        ***********************
		        i = [[1 2 3 4]
		             [1 2 3 4]
		             [1 2 3 4]
		             [1 2 3 4]]			        

d 过程见下
在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值