1.导入默认为 import numpy as np
创建矩阵
使用np.array()括号内是矩阵的相关信息
最简单的例子:
ay=np.array([[1,2,3],
[4,5,6]])
这是一个二维的矩阵,相当于c语言里的二维数组,一般来说,要从外往里数一下方括号的数量,比如从左数的话数的就是左方括号的数量,从第一个开始,到第一个挨着数字的左方括号结束,有几个就是几维,在numpy的文档里,你数了几个左方括号就代表几个轴,比如数了俩,就是x和y轴,再多一个 就是xyz三个轴,再多的话我也不知道是啥轴,只需要知道维度上升了即可。
与array配套的几个查看array的属性的函数
array.ndim// n代表一个数字,dim是dimension(维度)的缩写,返回int 代表维度
array.shape//返回一对数,代表几*几的矩阵
array.size//计算矩阵一共有几个元素,返回int
进阶操作:
1.设置内容类型,在【】之后加'.dtype',d是data的缩写,dtype=数据类型
主要有 int32,int64,float32,float64
array=np.array([1,2,3],dtpe=np.int32)
array=np.array([1,2,3],dtpe=np.int64)
array=np.array([1,2,3],dtpe=np.float32)
array=np.array([1,2,3],dtpe=np.float64)
2.创建特色矩阵
np.zeros((行数,列数))//告诉电脑,你要几行几列的矩阵
np.ones((行数,列数))//告诉电脑,你要几行几列的矩阵
np.empty((行数,列数))//告诉电脑,你要几行几列的矩阵 这个矩阵生成的应该是无穷小
3创建有序矩阵
np.arange(起点,终点,步长)
np.arange(起点,终点,步长).reshape((行数,列数))//代表创建完矩阵之后我要重新规划一下他的形状
4.生成线段
np.linspace(起点,终点,段数)//从起点到终点,要生成几个线段。
np.linspace(起点,终点,段数)。reshape((行数,列数))
矩阵的基础运算
1.四则运算
//加法
a=np.array([1,2,3,4])
b=np.range(4)//内容为从0-3的一维矩阵
c=a+b
print(c)//依然是得到矩阵,只不过是a的每一个数加去b中的每一个数
//减法
a=np.array([1,2,3,4])
b=np.range(4)//内容为从0-3的一维矩阵
c=a-b
print(c)//依然是得到矩阵,只不过是a的每一个数减去b中的每一个数
//乘法
a=np.array([1,2,3,4])
b=np.range(4)//内容为从0-3的一维矩阵
c=a*b
print(c)//依然是得到矩阵,只不过是a的每一个数*去b中的每一个数
//取整除法
a=np.array([1,2,3,4])
b=np.range(4)//内容为从0-3的一维矩阵
c=a/b
print(c)//依然是得到矩阵,只不过是a的每一个数/去b中的每一个数取整
2.特色运算
//比较大小,返回布尔类型
a=np.array([1,2,3,4])
b=np.array([5,6,7,8])
c=a<b
print(c)
//结果为
[ True True True True]
//多维矩阵适用的乘法
a=np.array([1,2,3,4])
b=np.array([5,6,7,8])
c=np.dot(a,b) or c=a.dot(b)
//线性代数上用的矩阵的乘法,结果为 70
//平方
a=3;
a**2==9//几次方用**n表示
// 三角函数
a=np.array([1,2,3,4])
b=np.array([5,6,7,8])
c=np.sin(a)//对a中每一个数求sin 也可以用其他的三角函数
print(c)
//求矩阵的和,最大值,最小值
a=np.random.random((2,2))//用随机数生成一个2行2列的矩阵
print(a)
[[0.34700893 0.85088823]
[0.95787822 0.248027 ]]
//axis 代表轴,0为y轴,1为x轴
//第一个为沿着y轴求和,第三个为沿着y轴求最大值, 第五个为沿着y轴求最小值
print(np.sum(a,axis=0)) //[1.30488715 1.09891523]
print(np.sum(a,axis=1)) //[1.19789715 1.20590522]
print(np.max(a,axis=0))//[0.95787822 0.85088823]
print(np.max(a,axis=1))//[0.85088823 0.95787822]
print(np.min(a,axis=0))//[0.34700893 0.248027 ]
print(np.min(a,axis=1))//[0.34700893 0.248027 ]
3.求某个特色值的索引
a=np.arange(2,14).reshape((3,4))
[[ 2 3 4 5]
[ 6 7 8 9]
[10 11 12 13]]
//求最大最小值的索引
print(np.argmax(a)) //11 注意是索引 不是第几个数!!!!!
print(np.argmin(a))//0
//求平均值
print(a.mean())//注意带括号 答案为 7.5
print(np.average(a))//答案为 7.5
//求中位数
print(np.median(a)) //7.5
//累加并且保存:累加一次保存一次
print(np.cumsum(a))//[ 2 5 9 14 20 27 35 44 54 65 77 90]
//累差并保存:累差是相邻两个数做差,连着减有点不合理
print(np.diff(a))//[[1 1 1]
[1 1 1]
[1 1 1]] 维度和原矩阵一致
//排序
printf(np.sort(a))//因为原来就是有序的,所以和原来的矩阵一样
//矩阵的转置
np.transpose(a)
//原来的a是
[[ 2 3 4 5]
[ 6 7 8 9]
[10 11 12 13]]
//转置之后是
[[ 2 6 10]
[ 3 7 11]
[ 4 8 12]
[ 5 9 13]]
//矩阵的修剪
print(np.clip(a,5,9)) //让小于5的数都等于5,大于9的数都等于9,这样就能保留5-9之间的数了
[[5 5 5 5]
[6 7 8 9]
[9 9 9 9]]