1.机器学习的约定
考虑如下例子:
numpy.asarray([[1., 2], [3, 4], [5, 6]])
numpy.asarray([[1., 2], [3, 4], [5, 6]]).shape
这是一个3x2的矩阵,那么访问第三行第一列的元素为:
numpy.asarray([[1., 2], [3, 4], [5, 6]])[2, 0]
2.广播
Numpy在算术运算中对不同形状阵列数组进行了广播操作。这意味着,一般是较小的数组(或标量)是通过广播跨越较大的阵列以使它们具有兼容的形状。
下面的例子显示广播的一个实例:
a = numpy.asarray([1.0, 2.0, 3.0])
b = 2.0
a * b
广播(broadcasting)处理规则:
- 让所有输入数组都向其中维数最多的数组看齐, shape 属性中不足的部分都通过在前面加 1 补齐。
- 输出数组的 shape 属性是输入数组的 shape 属性在各个轴上的最大值。
- 如果输入数组的某个轴长度为 1 或与输出数组对应轴的长度相同,这个数组就能够用来计算,否则出错。
- 当输入数组的某个轴长度为 1 时,沿着此轴运算时都用此轴上的第一组值。
>>> a=np.arange(0,50,10)
>>> a=a.reshape(-1,1)
>>> a
array([[ 0],
[10],
[20],
[30],
[40]])
>>> a.shape
(5L, 1L)
>>> b=np.arange(3)
>>> b
array([0, 1, 2])
>>> b.shape
(3L,)
>>> c=a+b
>>> c
array([[ 0, 1, 2],
[10, 11, 12],
[20, 21, 22],
[30, 31, 32],
[40, 41, 42]])