python3-numpy数组广播 和 np.tile 扩展数组

1、数组广播

import numpy as np

"""
广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。
如果两个数组 a 和 b 形状相同,即满足 a.shape == b.shape,那么 a*b 的结果就是 a 与 b 数组对应位相乘。这要求维数相同,且各维度的长度相同。
"""

a = np.arange(12).reshape(4,3)
print(a * 2)
"""
[[ 0  2  4]
 [ 6  8 10]
 [12 14 16]
 [18 20 22]]
"""

a = np.array([1,2,3,4])
b = np.array([10,20,30,40])

print(a * b)  # [ 10  40  90 160]


"""
当运算中的 2 个数组的形状不同时,numpy 将自动触发广播机制。如:
"""
a = np.arange(0, 12).reshape(4,3)
b = np.array([1,2,3])
print(a)
print(a + b)
"""
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]]
 
[[ 1  3  5]
 [ 4  6  8]
 [ 7  9 11]
 [10 12 14]]
 
 4x3 的二维数组与长为 3 的一维数组相加,等效于把数组 b 在二维上重复 4 次再运算:
"""


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))  # 重复 b 的各个维度

print(a + bb)
"""
[[ 1  2  3]
 [11 12 13]
 [21 22 23]
 [31 32 33]]
"""

2、np.tile 扩展数组

"""np.tile 扩展数组
np.tile(数组,(Y轴扩大倍数,X轴扩大倍数))  X轴或者Y轴 扩大一倍便为不复制
"""
bb = np.tile(b, (4, 1))  # 把 b 沿Y轴扩大4倍 沿X轴不变
print(bb)
"""
[[1 2 3]
 [1 2 3]
 [1 2 3]
 [1 2 3]]
"""

# 沿X轴复制
print(np.tile(b, (2)))  # [1 2 3 1 2 3]

https://www.runoob.com/numpy/numpy-broadcast.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值