1 arange函数
创建类似Python 的range函数功能的Numpy数组的方法:
下面的例子创建一个从1开始到10,步长为2的一维Numpy数组
In [21]: np.arange(1, 10, 2)
Out[21]: array([1, 3, 5, 7, 9])
2 linspace函数
但是当需要创建小数构成的数组时,由于一个整数到另一个整数之间存在无数个小数,使用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. ])
3 运算
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]])