NumPy是使用Python进行科学计算的一个基本库,其中机器学习的大部分算法都是调用该库实现。 主要包括以下功能:
相对于python自带的计算和存储方式而言,Numpy的方法效率更高,占用空间更小,是一个非常好的工具包。
1. np.array(list/tuple,dtype=np.float):生成指定的列表或者元组
a = np.array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]])
2.np.arange(n,dtype):生成0-n-1个数,类型默认为整数
a=np.arange(20)
————————————————————————result——————————————————————————————————————————————
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19])
3.np.ones((n,m)):生成n行m列的全为1的矩阵
np.ones((4,3))
————————————————————————result——————————————————————————————————————————————
array([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
4.np.zeros((n,m)):生成n行m列的全为0的矩阵
np.zeros((3,3))
————————————————————————result——————————————————————————————————————————————
array([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])
5.np.eye(n):生成n行n列对角线为1的矩阵
np.eye(5)
————————————————————————result——————————————————————————————————————————————
array([[1., 0., 0., 0., 0.],
[0., 1., 0., 0., 0.],
[0., 0., 1., 0., 0.],
[0., 0., 0., 1., 0.],
[0., 0., 0., 0., 1.]])
6.根据原来array对象,改变值,重新生成一个array对象
a = np.array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]])
np.ones_like(a) #根据原来array对象,重新生成一个全为1的array对象
————————————————————————result——————————————————————————————————————————————
array([[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1]])
np.zeros_like(a) #根据原来array对象,重新生成一个全为0的array对象
————————————————————————result——————————————————————————————————————————————
array([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]])
np.full_like(a,3) #根据原来array对象,重新生成一个全为的array对象
————————————————————————result——————————————————————————————————————————————
array([[3, 3, 3, 3, 3],
[3, 3, 3, 3, 3]])
7.np.linspace(a,b,n,endpoint=True/False):生成等间距的n个元素,起始位置为a,结束位置为b,endpoint代表是否取到最后一位。生成的默认为浮点数。
a=np.linspace(1,10,4)
————————————————————————result——————————————————————————————————————————————
array([ 1., 4., 7., 10.])
b=np.linspace(1,10,4,endpoint=False)
————————————————————————result——————————————————————————————————————————————
array([1. , 3.25, 5.5 , 7.75])
c=np.concatenate((a,b))
c
————————————————————————result——————————————————————————————————————————————
array([ 1. , 4. , 7. , 10. , 1. , 3.25, 5.5 , 7.75])
补充:array对象的几个属性
a = np.array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]])
print(a.ndim) #维度数
print(a.shape) #对象尺度(矩阵为几行几列)
print(a.size) #元素个数
print(a.dtype) #元素类型
print(a.itemsize) #对象大小,以字节为单位
————————————————————————result——————————————————————————————————————————————
2
(2, 5)
10
int32
4
1.reshape方法:不改变原对象,会重新生成一个对象,改变前后的元素数必须一致
2.resize方法:改变源对象
3.flatten方法:将对象降为一维
4.np.astype方法,可将对象中的所有元素类型进行转换,转换后生成一个新对象,原来的保持不变
5.array.tolist()方法,将array对象转换为python原生的list。list相对而言运算速度较慢,且占用空间较大,但在对接原生python程序中,这个方法还是很有用的
1.一维的array对象
(1)索引:同列列表
(2)切片
基本方式a[m:n:s],m是起始位置,n是结束位置(取不到),s是步长
2.多维的array对象
(1)索引:如下
一般形式
负数形式:-1代表最后一个,以此类推
(2)切片
思路:第一个维度随意,第二个维度要求是1,第三个维度要求是-3
思路:第一个维度随意,第二个维度要求从1和2,第三个维度随意
思路:第一和第二维度随意,第三维度要求步长为2
1.数组与标量之间的运算时,会每个元素除以该标量。以每个数除以平均值为例:
2.基本一元函数(同理,都是每个元素的运算,运算后原数组并不改变)
3.二元函数(两个array之间的运算)