开发者学堂课程【Python 科学计算库 NumPy 快速入门:数组间运算】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/605/detail/8823
数组间运算
内容简介:
一、场景
二、数组与数的运算
三、数组与数组的运算
四、广播机制
一、场景
数据:
[[80,86],
[82,80],
[85,78],
[90,90],
[86,82],
[82,90],
[78,80],
[92,94]]
二、数组与数的运算
arr = np.array([[1, 2, 3, 2, 1, 4],[5,6, 1, 2, 3,1]])
arr+1
arr/2
#可以对比 python 列表的运算,看出区别
a=[1,2,3,4,5]
a*3
三、数组与数组的运算
arr1 = np.array([[1, 2, 3, 2, 1, 4],[5,6, 1,2, 3, 11])
arr2 = np.array([[l, 2, 3,4],[3, 4, 5,6]])
上面这个能进行运算吗,结果是不行的!
四、广播机制
执行 broadcast 的前提在于,两个 ndarray 执行的是 element-wise 的运算,Broadcast 机制的功能是为 了方便不同形状的 ndarray (numpy库的核心数据结构)进行数学运算。
当操作两个数组时,nurhpy 会逐 个比较它们的 shape (构成的元组tuple) ,只有在下述情况下,两个数组才能够进行数组与数组的运算。
●维度相等
●shape (其中相对应的-一个地方为1)
例如:
Image (3d array):256x256x3
Scale (1d array):
Result (3d array): 256 x 256 x 3A
A (4d array):9x1x7x1
B (3d array): 8x1x5
Result (4d array):9x8x7x5
A (2d array): 5x4
B (1d array): 1
Result (2d array): 5x4
A (3d array):15x3x5
B (3d array):15 x1x1
Result (3d array):15x3x5
如果是下面这样,则不匹配:
A (1d array): 10
B (1d array): 12
A (2d array): 2 x1
B (3d array): 8x4x3
思考:下面两个 ndarray 是否能够进行运算?
arrl = np.array([[1, 2, 3, 2, 1, 4],[5,6,1, 2, 3,1]])
arr2 = np.array([[1], [3]])