创建类似Python 的range函数功能的Numpy数组的方法:
下面的例子创建一个从1开始到10,步长为2的一维Numpy数组
In [21]: np.arange(1, 10, 2) Out[21]: array([1, 3, 5, 7, 9])
但是当需要创建小数构成的数组时,由于一个整数到另一个整数之间存在无数个小数,使用arange就不能实现了。所以Numpy提供了linspace函数:
下面的例子生成0到10之前等距的10个数:
# np.linspace(起点,终点,需要生成的数字个数) In [25]: np.linspace(0, 10, 10) Out[25]: array([ 0. , 1.11111111, 2.22222222, 3.33333333, 4.44444444, 5.55555556, 6.66666667, 7.77777778, 8.88888889, 10. ])
Numpy运算:
Numpy的运算是基于元素级别的,具体可以看以下例子理解:
In [27]: data1 = np.arange(1, 5, 1) In [28]: data2 = np.arange(2, 6, 1) In [29]: data1 Out[29]: array([1, 2, 3, 4]) In [30]: data2 Out[30]: array([2, 3, 4, 5]) In [31]: data2 - data1 Out[31]: array([1, 1, 1, 1]) In [32]: data1 * 3 Out[32]: array([ 3, 6, 9, 12]) In [33]: data1 > 3 Out[33]: array([False, False, False, True]) 复制代码
如果要进行矩阵运算,需要使用 @
或dot
函数进行运算:
In [34]: data1 @ data2 Out[34]: 40 In [35]: data1.dot(data2) Out[35]: 40 复制代码
类似于Python中的+=
, *=
是在原对象上进行就地修改的:
In [36]: data1 *= 2 In [37]: data1 Out[37]: array([2, 4, 6, 8]) In [38]: data2 Out[38]: array([2, 3, 4, 5]) In [39]: data2 += 1 In [40]: data2 Out[40]: array([3, 4, 5, 6]) 复制代码
Numpy一元操作:
In [42]: data1 Out[42]: array([2, 4, 6, 8]) In [43]: data1.sum() Out[43]: 20 In [44]: data1.min() Out[44]: 2 In [45]: data1.max() Out[45]: 8 复制代码
对于多维数组的一元运算操作,可以通过指定axis的值进行运算:
axis为0表示按列进行计算;axis为1表示按行进行计算
In [46]: data = np.arange(12).reshape(3,4) In [47]: data Out[47]: array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) In [49]: data.sum(axis=1) Out[49]: array([ 6, 22, 38]) In [50]: data.sum(axis=0) Out[50]: array([12, 15, 18, 21]) In [51]: data.cumsum(axis=0) Out[51]: array([[ 0, 1, 2, 3], [ 4, 6, 8, 10], [12, 15, 18, 21]]) In [52]: data.cumsum(axis=1) Out[52]: array([[ 0, 1, 3, 6], [ 4, 9, 15, 22], [ 8, 17, 27, 38]])