Numpy数组
一·. 创建Numpy数组(array()函数)
from numpy import *
a = array([2,3,4])
b = zeros((3,4)) #创建一个全为0的3行4列的数组
c = ones((2,3)) #创建一个全为1的2行3列的数组
d = array([1,1, 1,4, 2,2])
d.dtype #输出dtype('float64')
arange()函数
通过指定开始值,终值,步长来创建一维数组(数组不包括终值)
import numpy as np
np.arange(0,10,2) #步长为2
np.array(range(0,10,2) #两个输出结果均为[0,2,4,6,8]
np.arange(0,10).reshape((2,5)) #输出结果为[[0,1,2,3,4],[5,6,7,8,9]] 以2行5列的矩阵展现
linspace函数
import numpy as np
>>>np.linsapce(0,1,5) #元素个数为5
array([0.,0.25,0.5,0.75,1.])
二. Numpy数组的访问
import numpy as np
a = np.arange(7) #array([0,1,2,3,4,5,6])
a[5] #5
a[3:6] #前闭后开array([3,4,5])
a[:5] #array([0,1,2,3,4])
a[:-1] #下标可用负数,表示从后往前数 array([0,1,2,3,4,5])
a [2:4] = 11,22 #修改元素的值 array([0,1,11,22,4,5,6]
a[1:-1:2] #2表示步长,array([1,22,5])
a[5:1:-2] #步长为负数时需开始下标大于结束下标,array([5,22])
二维数组的访问
import numpy as np
b = np.array([[0,1,2,3],
[10,11,12,13],
[20,21,22,23],
[30,31,32,33]])
b[2,3] #与b[2][3]效果相同,输出23
b[0:4,1] #第二列的所有数,输出array([1,11,21,31])
b[:,1] #同上
b[1,:] #第二行的所有数,输出array([10,11,12,13])
b[1:3,:] #每列的第二和第三个元素,输出array([10,11,12,13],[20,21,22,23])
三. Numpy数组的算术运算
import numpy as np
x = np.arange(0,np.pi/2,0.1)
y = np.sin(x) #输出结果为x对应值的三角函数
a = np.array([20,30,40,50])
b = np.arange(4)
c = a - b
print(c)
d = b ** 2
print(d)
a < 35
输出结果
array([20,29,38,47])
array([0,1,4,9])
array([Ture,Ture,False,False], dtype = bool)
相乘
import numpy as np
A = np.array([[1,1],[0,1]])
B = np.array([[2,0],[3,4]])
print(A * B) #逐个元素相乘
C = np.dot(A,B) #矩阵相乘
print(C)
输出结果
array([[2,0],[0,4]])
array([5,4],[3,4]])
a= np.random.random((2*3)) #随机生成2*3的小数数组
print(a)
a.sum() #所有矩阵中的元素求和
a.min() #所有矩阵中元素的最小值
a.max() #所有矩阵中元素的最大值
a.sort() #排序
输出
array([[0.86725, 0.48462, 0.03524],
[0.14528, 0.93601, 0.72531]])
3.19371 #sum
0.03524 #min
0.93601 #max
array([[0.03524, 0.48462, 0.86725]
[0.14528, 0.72531, 0.93601]]) #sort
通过指定axis参数(即数组的微)对指定的轴做相应的运算:
>>>b = np.arange(12).reshape(3,4)
>>>b
array([[0, 1, 2, 3],
[4, 5, 6, 7],
[8, 9, 10, 11]])
>>>b.sum(axis = 0) #计算每一列的和
array([12, 15, 18, 21])
>>>b.min(axis = 1) #获取每一行的最小值
array([0, 4, 8])
>>>b.cumsum(axis = 1) #计算每一行的累加和
array([[0, 1, 3, 6],
[4, 9, 15, 22],
[8, 17, 27, 38]])
>>>np.medium(b) #返回中位数
5.5
>>>np.mean(b) #返回平均数
5.5
>>>np.transpose(b) #对数组转置
array([[0, 4, 8],
[1, 9, 17],
[3, 15, 27],
[6, 22, 38]])
>>>b.resize((3,4)) #改变为3*4的数组形状
>>>b
array([[0, 1, 3, 6],
[4, 9, 15, 22],
[8, 17, 27, 38]])
四. Numpy中的矩阵对象
Numpy模块库中的矩阵对象为numpy.matrix,包括矩阵数据的处理,矩阵的计算以及基本的统计功能、转置、可逆性等,还包括对复数的处理均在matrix对象中。
>>>a = np.matrix('1 2 7; 3 4 8; 5 6 9') #矩阵换行必须用“;”隔开,矩阵之间的元素必须用空格隔开
>>>a
matrix([[1,2,7],
[3,4,8],
[5,6,9]])
>>>b = np.array([[1,5],[3,2]])
>>>x = np.matrix(b)
>>>x
matrix([[1,5],[3,2]])
矩阵对象的属性如下:
matrix .T(transpose):返回矩阵的转置矩阵
matrix.H(conjugate):返回复数矩阵的共轭元素矩阵
matrix.I(inverse):返回矩阵的逆矩阵
matrix.A(base array):返回矩阵基于的数ump
五.数组的操作
1.添加numpy.append
import numpy as np
a = np.array([1,2,3],[4,5,6])
b = np.append(a, [7,8,9]) #array([1,2,3,4,5,6,7,8,9])
b = np.append(a, [7,8,9],axis = 0) #行增加,array([[1,2,3],[4,5,6],[7,8,9]])
b = np.append(a, [7,8,9],[10,11,12],axis = 1) #列增加,array([[1 2 3 7 8 9] [4 5 6 10 11 12]])
2.数组的插入(删除同理)
import numpy as np
a = np.array([[1,2],[3,4],[5,6]])
c = np.insert(a,1,[11],axis = 0) #array([[1,2],[11,11],[3,4],[5,6]])
c = np.insert(a,1,[11],axis = 1) #array([[1,11,2],[3,11,4],[5,11,6]])
创建一个5x5矩阵,值为1、2、3、4,位于对角线下方
Z = np.diag(1+np.arange(4),k=-1) #k=-1表示对角线下移一行
print(Z)
numpy.unravel_index()函数的作用是获取一个/组int
类型的索引值在一个多维数组中的位置。
考虑一个(6,7,8)形状的数组,第100个元素的下标(x,y,z)是什么?
print(np.unravel_index(99,(6,7,8))) #np.unravel_index(索引值,数组形状)
np.tile() 将原矩阵横向,纵向地复制
Z = np.tile( np.array([[0,1],[1,0]]), (4,4) #数组[0,1],[1,0]在列方向,行方向重复4次
print(Z)
np.random.randint()函数的作用是,返回一个随机整型数(min,max,size)