Numpy的广播

Numpy的广播

广播 是指Numpy在算术运算期间处理不同形状的数组的能力。

同维矩阵操作
>>>a=np.array([1,2,3,4,5])
>>>b=np.array([10,20,30,40,50])
>>>print(a+b)       #相加
[11 22 33 44 55]
>>>print(a*b)       #相乘
[ 10  40  90 160 250]
>>>print(b-a)       #相减
[ 9 18 27 36 45]
不同维度矩阵操作

就需要使用广播

>>>a=np.array([[1,1,1],[10,10,10],[20,20,20]])
>>>b=np.array([1,2,3])
>>>print("矩阵a")
>>>print(a)
>>>print("矩阵b")
>>>print(b)
矩阵a
[[ 1  1  1]
 [10 10 10]
 [20 20 20]]
矩阵b
[1 2 3]
>>>print(a*b)
[[ 1  2  3]
 [10 20 30]
 [20 40 60]]
>>>print(a+b)
[[ 2  3  4]
 [11 12 13]
 [21 22 23]]
>>>print(a-b)
[[ 0 -1 -2]
 [ 9  8  7]
 [19 18 17]]

可以通过修改数组的shape属性,在保持数组元素个数不变的情况下,改变数组每个轴的长度。

>>>g=np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]])
>>>print(g)
[[ 1  2  3  4]
 [ 4  5  6  7]
 [ 7  8  9 10]]
 >>>g.shape=4,3        #从(3,4)到(4,3)不是数组转置,而是改变每个轴的大小,数组元素在内存中的位置没有变化。
 >>>print(g)
[[ 1  2  3]
 [ 4  4  5]
 [ 6  7  7]
 [ 8  9 10]]
 >>>g.shape=2,-1        #当某个轴的元素为-1时,会根据数组元素个数自动计算此轴的长度。
 >>>print(g)
[[ 1  2  3  4  4  5]
 [ 6  7  7  8  9 10]]
 >>>h=g.reshape(6,2)     #使用数组的reshape,可以创建一个改变了尺寸的新数组,原数组的shape保持不变
 >>>print(h)
[[ 1  2]
 [ 3  4]
 [ 4  5]
 [ 6  7]
 [ 7  8]
 [ 9 10]]
 >>>np.arange(0,60,10).reshape(-1,1)+np.arange(0,6)
array([[ 0,]  1,  2,  3,  4,  5],
       [10, 11, 12, 13, 14, 15],
       [20, 21, 22, 23, 24, 25],
       [30, 31, 32, 33, 34, 35],
       [40, 41, 42, 43, 44, 45],
       [50, 51, 52, 53, 54, 55]])
>>>np.arange(0,60,10)+np.arange(0,6)
array([ 0, 11, 22, 33, 44, 55]) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值