版权声明:本文为威哥哥带你写代码原创文章,有错请评论,转载请注明,谢谢
Numpy基础
Numpy所包括的函数可以十分方便的进行数据处理,尤其是矩阵运算,之前的python都是使用列表与元组,在进行矩阵运算的时候非常不便。对于同样的数值计算任务,使用Numpy要比直接使Python代码方便得多。因为Numpy 能够直接对数组和矩阵进行操作,代码量大大的减少了,并且其众多的数学函数也会让编写代码的工作轻松许多。
如何生成矩阵
使用创建二维数组的方法创建矩阵,我们使用的是array函数
1.生成矩阵实例;
import numpy as np
a=np.array([[1,2],[3,4]])
print(a)
输出结果为
2.数据类型定义;
我们知道每一个元素都有对应的数据类型,Numpy的数据类型有int32 int64 float32 bool等,我将如何定义呢?需要使用dtype,
实例:
a=np.array([[1,3,5],[2,5,3],[3,5,7]],dtype=np.float)
print(a.dtype)
输出为:
这个时候数组中的每一个元素类型已经定义为了float64类型,当然你也可以定义为float32
3.查看矩阵信息;
这个时候可以用ndim查看维度(注意这里是数组的维度,区分清楚数组和矩阵),用shape和size看矩阵大小
实例:
a=np.array([[1,3,5],[2,5,3],[3,5,7]],dtype=np.float)
print(a)
print('number of dim: ',a.ndim)
print('shape: ',a.shape)
print('size: ',a.size)
print(a.dtype)
输出:
特殊矩阵的创建
1.创建0矩阵
a=np.zeros((3,4))
print(a)
创建3行4列的0矩阵,输出为:
2.创建全为1的矩阵
a=np.ones((5,5))
创建5x5的矩阵
输出为:
3.利用reshape生成特定的矩阵
a=np.arange(8,20,1).reshape((3,4))
范围8到20,步长为1,生成3x4的矩阵
输出:
4.利用random生成随机矩阵
r=np.random.random((2,4))
生成2x4的随机数矩阵
矩阵的运算
1.加减运算
这里指的是2个矩阵的对应元素相加减,这里一定要注意是同类型的矩阵不然会报错
a=np.arange(8,20,1).reshape((3,4))
print(a)
[[ 8 9 10 11]
[12 13 14 15]
[16 17 18 19]]
b=np.ones((3,4))
print(b)
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
>>> c=a-b
[[ 7. 8. 9. 10.]
[11. 12. 13. 14.]
[15. 16. 17. 18.]]
2.矩阵中每一个元素自己的平方运算
a=np.arange(8,20,1).reshape((3,4))
print(a)
[[ 8 9 10 11]
[12 13 14 15]
[16 17 18 19]]
a**2
array([[ 64, 81, 100, 121],
[144, 169, 196, 225],
[256, 289, 324, 361]], dtype=int32)
3.矩阵的乘法运算
矩阵乘法的具体概念在线性代数中有具体解释,这里有2种用法,第一种:
c=np.dot(a,d)
第二种:
c=a.dot(d)
结果都一样,不过需要注意的是
ps:图片来自《线性代数》同济大学数学系编 第六版
一定要注意,不然是会报错的。
矩阵的其他操作
1.三角函数
>>> c=np.sin(b)
>>> print(b)
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
>>> print(c)
[[0.84147098 0.84147098 0.84147098 0.84147098]
[0.84147098 0.84147098 0.84147098 0.84147098]
[0.84147098 0.84147098 0.84147098 0.84147098]]
可以看出每一个元素都进行了sin()的操作,另外cos tan等同理,注意定义域范围。
2.判断大小
>>> a
array([[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19]])
>>> a<14
array([[ True, True, True, True],
[ True, True, False, False],
[False, False, False, False]])
这里判断小于14的值,符合则输出true否则false
3.求矩阵中的最大值和最小值和矩阵各个元素求和
print(np.sum(a))
print(np.min(a))
print(np.max(a))
同时我们也可以使用axis来控制行和列
print(np.sum(a,axis=1)) #axis为1则在行中求和,0则在列中