numpy广播机制
满足什么条件下,两个ndarray运算时才可以广播?
广播规则的完整描述:
让所有输入数组都向其中形状最长的数组看齐,形状中不足的部分都通过在前面加 1 补齐。 输出数组的形状是输入数组形状的各个维度上的最大值。 如果输入数组的某个维度和输出数组的对应维度的长度相同或者其长度为 1 时,这个数组能够用来计算,否则出错。 当输入数组的某个维度的长度为 1 时,沿着此维度运算时都用此维度上的第一组值。
简单理解:
对两个数组,分别比较他们的每一个维度(若其中一个数组没有当前维度则忽略),满足:
- 数组拥有相同形状。
- 当前维度的值相等。
- 当前维度的值有一个是1。
简记法
- 数组维度不同,后缘维度(trailing dimension)轴长相同 例如:4,3,2 和 3,2
- 数组维度相同,其中有一个轴维度为1 例如:4,3 和 4,1