type
status
date
slug
summary
tags
category
icon
password
Property
数组与数的计算
在
Python
列表中,想要对列表中所有的元素都加一个数,要么采用map
函数,要么循环整个列表进行操作。但是NumPy
中的数组可以直接在数组上进行操作:数组与数组的计算
结构相同的数组之间的运算
与行数相同并且只有1列的数组之间的运算
与列数相同并且只有1行的数组之间的运算
广播原则
如果两个数组的后缘维度(trailing dimension,即从末尾开始算起的维度)的轴长度相符或其中一方的长度为1,则认为他们是广播兼容的,广播会在缺失和(或)长度为1的维度上进行:
shape
为(3,8,2)
的数组能和(8,3)
的数组进行运算吗? 不能,按照广播原则,从后面往前面数,(3,8,2)
和(8,3)
中的2
和3
不相等,所以不能进行运算。
shape
为(3,8,2)
的数组能和(8,1)
的数组进行运算吗? 能,按照广播原则,从后面往前面数,(3,8,2)
和(8,1)
中的2
和1
虽然不相等,但是因为有一方的长度为1
,所以能参与运算。
shape
为(3,1,8)
的数组能和(8,1)
的数组进行运算吗? 能,按照广播原则,从后面往前面数,(3,1,4)
和(8,1)
中的4
和1
虽然不相等且1
和8
不相等,但是因为这两项中有一方的长度为1
,所以能参与运算。
简单理解:对两个数组,分别比较他们的每一个维度(若其中一个数组没有当前维度则忽略),满足:
- 数组拥有相同形状。
- 当前维度的值相等。
- 当前维度的值有一个是 1。
若条件不满足,抛出 "
ValueError: frames are not aligned
" 异常。下面的图片展示了数组 b 如何通过广播来与数组 a 兼容