博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
矩阵NumPy
阅读量:4972 次
发布时间:2019-06-12

本文共 5371 字,大约阅读时间需要 17 分钟。

 

常量:

np.pi  π

 

 

创建矩阵数组

1 import numpy as np 2 # array=np.array([[1,2,3],[5,6,7]])  #定义一个2行3列的矩阵数组.2行=2维 3 # print(array.ndim) #返回矩阵数组的维数 4 # print(array.shape) #返回矩阵数组的维数和列数。(2, 3) 5 # print(array.size)  #返回矩阵数组的元素总个数 6 # 7 # array1=np.array([[1,2,3],[5,6,7]],dtype=np.int)  #定义一个矩阵数组 8 # #dtype   指定每个元素的数据类型     可选 9 # print(array1.dtype)  #返回元素的数据类型。int3210 # array2=np.zeros((3,4)) #定义一个元素值都是0,3行4列的矩阵数组11 # print(array2)12 # array3=np.ones((3,4))  #定义一个元素值都是1,3行4列的矩阵数组13 # print(array3)14 #array4=np.empty((3,4))  #定义一个元素值都是空,3行4列的矩阵数组15 #空  值非常接近0    6.23042070e-30716 #print(array4)17 #array5=np.arange(10,20,2)  #定义一个一维n列矩阵数组18 #参数1 参数2 数据范围19 # 参数3  步长值     [10 12 14 16 18]20 #print(array5)21 # array6=np.arange(10,33,2).reshape((3,4))  #定义一个3行4列的有序矩阵数组22 # print(array6)23 #array7=np.linspace(1,10,5) #定义一个一维数组24 #元素值是:在1到10之间平均分成5个点。注意包括1025 #[ 1.    3.25  5.5   7.75 10.  ]26 #print(array7)27 array8=np.linspace(1,10,6).reshape((2,3))  #定义一个2行3列的矩阵数组28 print(array8)

 

np.random.rand()     返回一个或一组服从“0~1”均匀分布的随机样本值。随机样本取值范围是[0,1),不包括1

 

 

 

 

 

 

矩阵数组的运算:

矩阵乘法:

只有在第一个矩阵的列数和第二个矩阵的行数相同时才有意义

 

1 import numpy as np  2 a=np.array([1,2,3,4])  3 b=np.arange(10,17,2)  4 x=np.array([[1,2],[10,20]])  5 y=np.arange(10,17,2).reshape((2,2))  6 z=np.array([[1,2,3],[10,20,30]])  7 c=a-b  #两个矩阵数组对应元素分别进行计算  8 c=a**2  9 c=np.sin(a) 10 c=a<3  #[ True  True False False] 11 c=x*y  #两个矩阵数组对应元素分别进行计算 12 d=np.dot(x,y) #矩阵乘法[看上面的图] 13 d=x.dot(y)  #矩阵乘法 14  15 c=np.random.random((2,3))  #产生一个2行3列的随机数矩阵 16 #每个元素的随机数在0到1之间 17 c=np.min(x) #找出最小元素的值 18 c=np.max(x)  #找出最大元素的值 19 c=np.sum(z,axis=1)  #每一行求和  [ 6 60] 20 c=np.sum(z,axis=0)  #每一列求和.[11 22 33] 21 c=np.argmin(a) #最小值的索引 22 c=np.argmax(z) #最大值的索引 23 c=np.average(z)   #求全部元素的平均值 24 c=np.median(z) #找出中位数 25 #中位数:将数据按照从小到大或从大到小的顺序排列,如果数据个数是奇数,则处于最中间位置的数就是这组数据的中位数;如果数据的个数是偶数,则中间两个数据的平均数是这组数据的中位数 26 c=np.cumsum(z)  #返回各元素与前面元素累加后的一维矩阵。[ 1  3  6 16 36 66] 27 z=np.array([[100,2,3],[10,20,30]]) 28 c=np.diff(z)  #各维 后列减去前列后 的矩阵。[[-98   1]   [ 10  10]] 29 z=np.array([[100,0,3],[10,20,30]]) 30 c=np.nonzero(z)  #找出非0元素的位置 31 #(array([0, 0, 1, 1, 1], dtype=int64), array([0, 2, 0, 1, 2], dtype=int64)) 32 #第一个数组是非0元素的行索引,第二个数组是非0元素的列索引 33 d=np.transpose(c)  #通过行列转换,返回相应的位置矩阵。[[0 0] [0 2] [1 0] [1 1] [1 2]] 34 # 注意参数c的值 35 d=z[c]  #找出相应位置元素的一维矩阵。[100   3  10  20  30] 36 #注意参数c的值  c是位置元组 37 c=np.sort(z) #对各维分别进行排序-升序。[[  0   3 100] [ 10  20  30]] 38 z=np.array([[100,2,3,50],[10,20,30,15],[35,86,74,14]]) 39 c=np.transpose(z)  #行列转换,行变成列,列变成行 40 # [[100  10] [  0  20] [  3  30]] 41 c=z.T  #与np.transpose(z)相同 42 c=np.clip(z,5,9)#矩阵z中小于5的元素都等于5,大于9的元素都等于9 43 #参数2  最小值;参数3 最大值 44 z=np.array([[10,2,3,50],[10,20,30,15]]) 45 c=np.mean(z)   #求所有元素的平均值 46 c=z.mean()     #求所有元素的平均值 47 c=np.mean(z,axis=1)  #各行求平均值。[16.25 18.75] 48 c=np.mean(z,axis=0)  #各列求平均值。[10.  11.  16.5 32.5] 49 c=a[1]  #返回一维矩阵索引号对应的值.3 50 c=z[1]  #多维矩阵就返回行索引对应的矩阵。[10 20 30 15] 51 c=z[1][1]  #返回第一行第一列的值 52 c=z[1,1]   #返回第一行第一列的值 53 c=z[1,:]  #返回第一行的所有元素。[10 20 30 15] 54 # : 代表所有 55 c=z[:,1] #返回第一列的所有元素。[ 2 20] 56 c=z[1,1:3] #返回第一行的1到3的元素。 57 #注意  顾头不顾尾 58 c=z[0:1,1]  #返回第一列的0到1的元素 59 z=np.array([[10,2,3,50],[10,20,30,15],[100,500,200,800]]) 60 for r in z: #每次返回一行 61     #print(r) 62     pass 63 for r in z.T: #每次返回一列 64     #print(r) 65     pass 66 c=z.flat  #把矩阵转换成一维迭代器 67 c=z.flatten()  #把矩阵转换成一维矩阵 68 for i in z.flat: #每次返回一个元素 69     #print(i) 70     pass 71 a=np.array([[1,2,3,4],[60,20,90,10]]) 72 b=np.array([[500,200,800,444],[2,2,2,2]]) 73 c=a.shape  #返回多维矩阵的行数和列数。(2, 4) 74 c=b.shape  #返回一维矩阵的列数.(4,) 75 c=np.vstack((a,b))  #合拼成一个矩阵 76 #以行为单位,按行顺序排列 77 c=np.hstack((a,b))  #合拼成一个矩阵 78 #以行为单位,按列顺序排列 79 x=np.array([3,8,4,9]) 80 y=np.array([[5,6,7,8],[10,30,90,50],[500,200,800,444]]) 81 c=y[:,np.newaxis] #多维给每行加一层行嵌套 82 c=x[:,np.newaxis]  #一维给每个元素加一层行嵌套。一行n列变成n行1列 83 c=x[np.newaxis,:] 84 d=y[np.newaxis,:]  #给矩阵加一个行总嵌套 85 x=np.array([[3,8,4,9],[500,200,800,444]]) 86 y=np.array([[5,6,7,8],[10,30,90,50]]) 87 c=np.concatenate((x,y,x),axis=0)  #合拼成一个矩阵 88 #以行为单位,按行顺序排列 89 c=np.concatenate((x,y,x),axis=1)  #合拼成一个矩阵 90 #以行为单位,把每列合拼成一行 91 y=np.array([[5,6,7,8],[10,30,90,50],[500,200,800,444],[1,2,3,4]]) 92 c=np.split(y,2,axis=0) #分割矩阵【必须均等分】 93 #把矩阵分层2个 94 #axis=0  以行分割; 95 # axis=1  以列分割   [array([[  5,   6],[ 10,  30],[500, 200],[  1,   2]]), array([[  7,   8],[ 90,  50],[800, 444],[  3,   4]])] 96 c=np.split(y,2,axis=1) 97 c=np.array_split(y,3,axis=0) #分割矩阵【可以不均等分】 98 c=np.vsplit(y,2)  #跟np.split(y,2,axis=0)相同 99 c=np.hsplit(y,2)  #跟np.split(y,2,axis=1)相同100 a=np.arange(4)101 b=a  #把a的地址给b102 c=a103 d=b104 a[0]=11  #修改某元素的数据【注意 数据的类型】105 a[1:3]=[22,33]  #修改第一项到第三项的数据。顾头不顾尾106 e=b is a107 b=a.copy() #把a的值给b108 a[0]=100109 print(a)110 print(b)111 112 print(id(a),id(b))

 

排序:

 

1 import numpy as np 2 z=np.array([[100,0,3],[10,20,30]]) 3 c=np.sort(z,axis=1) #对各维分别进行排序-升序。[[  0   3 100] [ 10  20  30]] 4 print(c) 5 c=np.sort(z,axis=0)  #对各列分别进行排序-升序  [[ 10   0   3] [100  20  30]] 6 c=np.argsort(z,axis=1) #返回 各维按升序排序所处的位置。[[1 2 0] [0 1 2]] 7 c=np.argsort(z,axis=0) #返回 各列按升序排序所处的位置。[[1 0 0] [0 1 1]] 8 a=[1,5,1,4,3,4,4] 9 b=[9,4,0,4,0,2,1]10 c=np.lexsort((b,a))

 

s=q[:-1]   去掉最后一个数据

 

q = np.arange(36)

s = q.reshape(6,6) #更改数组形状,变成6行6列

 

s = q.reshape(6,3,2) #更改数组形状

#总的分层6块,每块3行2列

 

arr2[::2,::2]   #设置步长为2

 

 

 

e=np.any(s) == True #s数据表中只要有一个数据是True就返回True

e=np.all(s) == True #s数据表中所有数据都是True就返回True

 

转载于:https://www.cnblogs.com/liming19680104/p/10459590.html

你可能感兴趣的文章
javascript遍历数组
查看>>
bzoj4765: 普通计算姬 (分块 && BIT)
查看>>
thinkphp5-----模板中函数的使用
查看>>
POJ-3211 Washing Clothes[01背包问题]
查看>>
[BZOJ4832][Lydsy1704月赛]抵制克苏恩
查看>>
数据库三范式
查看>>
看完漫画秒懂区块链
查看>>
开发工具,做一个有效率的开发者
查看>>
对Haskell这门语言的基本认识
查看>>
mysql 安装补充
查看>>
大学里如何学习 ?
查看>>
Oracle命令类别
查看>>
js面试题:关于数组去重的四种方法总结
查看>>
Linux内核分析(三)----初识linux内存管理子系统
查看>>
stc12c5a60s2驱动TEA5767收音机模块硬件调试总结
查看>>
vue中提示$index is not defined
查看>>
Java中对List集合内的元素进行顺序、倒序、随机排序的示例代码
查看>>
css选择器
查看>>
看懂下面C++代码才说你理解了C++多态虚函数!
查看>>
ASP.NET上传下载文件
查看>>