import numpy as np np.__version__
运行结果:
‘1.20.3’
nparr=np.array([i for i in range(10)]) nparr
运行结果:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
nparr.dtype #查看存储类型
运行结果:
dtype(‘int32’)
np.zeros(10) #10个为float类型的0
运行结果:
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
np.zeros(10,dtype=int) #10个为int类型的0
运行结果:
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
np.zeros(shape=(3,5),dtype=int) #三行五列全为0的矩阵
运行结果:
array([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]])
np.ones(10)
运行结果:
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
np.ones((3,5)) #三行五列全为1的矩阵
运行结果:
array([[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.]])
np.full(shape=(3,5),fill_value=666) #生成一个三行五列矩阵 并且值为666
运行结果:
array([[666, 666, 666, 666, 666],
[666, 666, 666, 666, 666],
[666, 666, 666, 666, 666]])
np.arange(0,20) #生成一个数组,存储的值为0~20 不包含尾
运行结果:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19])
np.arange(0,20,2) #步长为2
运行结果:
array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18])
np.linspace(0,20,10,dtype=int) #20包含在数组中的 10代表要生成10个样本数量 包括起始点和终止点的
运行结果:
array([ 0, 2, 4, 6, 8, 11, 13, 15, 17, 20])
np.random.randint(0,10) #生成0,10之间的随机数
运行结果:
4
np.random.randint(6,10,size=10) #加入第三个参数 代表要生成一个数组 数字代表生成的数组中元素的个数
运行结果:
array([6, 7, 7, 6, 9, 6, 6, 8, 8, 8])
np.random.randint(6,10,size=(3,5)) #从6~10生成随机数 生成一个三行五列的矩阵
运行结果:
array([[9, 8, 6, 7, 7],
[6, 9, 9, 7, 8],
[6, 7, 9, 7, 7]])
np.random.normal() #符合正态分布的随机数 0~1之间
运行结果:
-0.30172177191410243
np.random.normal(10,100) #指定均值为10 方差为100
运行结果:
-167.68898338073987
np.random.normal(0,1,size=(3,5)) #指定均值为0 方差为1 三行五列的随机矩阵
运行结果:
array([[ 0.75087514, -0.74956741, -0.38480188, 1.20089131, -0.87826449],
[-0.46797944, 0.90680574, 0.91860824, 0.40180184, 0.53770265],
[-0.03535741, 0.07666546, -0.41779575, 0.96714372, -0.21326813]])
X=np.arange(15).reshape(3,5) #将一个一维数组 转换成3*5的二维数组 X
运行结果:
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
x:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] x.reshape(10,-1) #变成十行的矩阵
运行结果:
array([[0],
[1],
[2],
[3],
[4],
[5],
[6],
[7],
[8],
[9]])
X.ndim
运行结果:
2
X.shape
运行结果:
(3, 5)
X.size
运行结果:
15
X:([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14]]) X[2,2] #在numpy中访问多维数组中某个元素的方法
运行结果:
12
x:array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) x[0:5] #访问从下标为0到下标为5 但不包含小标为5的元素
运行结果:
array([0, 1, 2, 3, 4])
x[:5]#切片 访问从下标为0到下标为5 但不包含小标为5的元素
运行结果:
array([0, 1, 2, 3, 4])
x[5:] #访问从下标为5到最后下标的元素
运行结果:
array([5, 6, 7, 8, 9])
x[::2]#从头访问到尾 步长为2
运行结果:
array([0, 2, 4, 6, 8])
二维数组中的切片:
X:array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14]]) X[:2,:3] #访问X二维数组的前两行和前三列
运行结果:
array([[0, 1, 2],
[5, 6, 7]])
X[:2,::2]#访问前两行 但间隔为2的元素
运行结果:
array([[0, 2, 4],
[5, 7, 9]])
X[::-1,::-1] #对矩阵做了反转
运行结果:
array([[14, 13, 12, 11, 10],
[ 9, 8, 7, 6, 5],
[ 4, 3, 2, 1, 0]])
X[0,:]#只取第一行
运行结果:
array([0, 1, 2, 3, 4])
X[:,0]#只取第一列
运行结果:
array([ 0, 5, 10])
x=np.array([1,2,3]) y=np.array([3,2,1]) #x:[1, 2, 3] #y:[3, 2, 1] #将x y合并成 1*6的向量 np.concatenate([x,y])
运行结果:
[1, 2, 3, 3, 2, 1]
A=np.array([[1,2,3], [4,5,6] ]) # A:[ [1, 2, 3], # [4, 5, 6]] np.concatenate([A,A],axis=0)#axis=0 (2,3)+(2,3)=>(4,3)
运行结果:
[[1, 2, 3],
[4, 5, 6],
[1, 2, 3],
[4, 5, 6]]
A=np.array([[1,2,3], [4,5,6] ]) # A:[ [1, 2, 3], # [4, 5, 6]] np.concatenate([A,A],axis=1)#axis=1 (2,3)+(2,3)=>(2,6)
运行结果:
[[1, 2, 3, 1, 2, 3],
[4, 5, 6, 4, 5, 6]]
#A:[[1 2 3] # [4 5 6]] #Z:[666 666 666] np.vstack([A,z])
运行结果:
[[ 1, 2, 3],
[ 4, 5, 6],
[666, 666, 666]]
#A:[[1, 2, 3], # [4, 5, 6]] #B:[[100, 100], # [100, 100]] np.hstack([A,B])
运行结果:
[[ 1, 2, 3, 100, 100],
[ 4, 5, 6, 100, 100]]
# x:[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] np.split(x,[3,7])#第一个参数要分割的数组 第二个参数分割点(ind1,ind2,....)
运行结果:
[array([0, 1, 2]), array([3, 4, 5, 6]), array([ 7, 8, 9, 10, 11])]
''' A:[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]] ''' A1,A2=np.split(A,[2],axis=0) #按行分割 A1 A2
运行结果:
A1:
[[0, 1, 2, 3],
[4, 5, 6, 7]]
A2:
[[ 8, 9, 10, 11],
[12, 13, 14, 15]]
A1,A2=np.split(A,[2],axis=1) #按列分割 A1 A2
运行结果:
A1:
[[ 0, 1],
[ 4, 5],
[ 8, 9],
[12, 13]]
A2:
[[ 2, 3],
[ 6, 7],
[10, 11],
[14, 15]]
''' A:[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]] ''' upper,lower=np.vsplit(A,[2]) #按行分割 upper lower
运行结果:
upper:
[[0, 1, 2, 3],
[4, 5, 6, 7]]
lower:
[[ 8, 9, 10, 11],
[12, 13, 14, 15]]
''' A:[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]] ''' left,right=np.hsplit(A,[2]) #按列分割 left right
运行结果:
left:
[[ 0, 1],
[ 4, 5],
[ 8, 9],
[12, 13]]
right:
[[ 2, 3],
[ 6, 7],
[10, 11],
[14, 15]]
'''A:[[0, 1], [2, 3]]''' '''B:[[10, 10], [10, 10]] ''' A+B
运行结果:
[[10, 11],
[12, 13]]
'''A:[[0, 1], [2, 3]]''' '''B:[[10, 10], [10, 10]] ''' A-B
运行结果:
[[-10, -9],
[ -8, -7]]
'''A:[[0, 1], [2, 3]]''' '''B:[[10, 10], [10, 10]] ''' A.dot(B)
运行结果:
[[10, 10],
[50, 50]]
'''A:[[0, 1], [2, 3]]''' A.T
运行结果:
[[0, 2],
[1, 3]]
'''A:[[0, 1], [2, 3]]''' invA=np.linalg.inv(A) #得到A的逆矩阵 invA
运行结果:
[[-1.5, 0.5],
[ 1. , 0. ]]
''' L:[[0.02804115, 0.89374515, 0.10564531, 0.67513696, 0.41822928,0.18239652, 0.03782683, 0.03502166, 0.75831584, 0.96686519]] ''' np.sum(L)
运行结果:
4.101223889019293
'''X:[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]]''' np.sum(X,axis=0) #每一列的和
运行结果:
[24, 28, 32, 36]
'''X:[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]]''' np.sum(X,axis=1) #每一行的和
运行结果:
[ 6, 22, 38, 54]
''' L:[[0.02804115, 0.89374515, 0.10564531, 0.67513696, 0.41822928,0.18239652, 0.03782683, 0.03502166, 0.75831584, 0.96686519]] ''' np.min(L)
运行结果:
0.02804115262184914
''' L:[[0.02804115, 0.89374515, 0.10564531, 0.67513696, 0.41822928,0.18239652, 0.03782683, 0.03502166, 0.75831584, 0.96686519]] ''' np.max(L)
运行结果:
0.9668651857442104
'''X:[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]]''' np.prod(X)#矩阵中所有元素的乘积
运算结果:
0
'''X:[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]]''' np.mean(X) #求平均值
运行结果:
7.5
'''X:[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]]''' np.median(X) #求中位数
运行结果:
7.5
'''X:[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]]''' np.percentile(X,q=25)
运行结果:
3.75
'''X:[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]]''' np.std(X)#求标准差
运行结果:
4.6097722286464435
# x:[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] np.argmin(x) #x中最小值的索引位置
运行结果:
0
# x:[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] np.argmax(x)#x中最大值的索引位置
运行结果:
15
如果传给permutation一个矩阵,它会返回一个洗牌后的矩阵副本;而shuffle只是对一个矩阵进行洗牌,无返回值。
如果传入一个整数,它会返回一个洗牌后的arange
#x:[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] np.random.shuffle(x)
运行结果:
[15, 10, 1, 3, 12, 11, 6, 0, 13, 2, 8, 14, 4, 5, 7, 9]
#x:[ 0, 12, 22, 35, 42, 51, 62, 73, 83, 94, 105, 112, 124, 135, 146, 157] copyx=np.random.permutation(x) copyx
运行结果:
[ 22, 12, 73, 112, 135, 51, 105, 146, 157, 42, 124, 62, 83,
94, 35, 0]
#x:[ 0, 12, 22, 35, 42, 51, 62, 73, 83, 94, 105, 112, 124, 135, 146, 157] shuffindex=np.random.permutation(len(x)) shuffindex
运行结果:
[ 8, 3, 4, 5, 9, 6, 15, 2, 0, 14, 10, 11, 12, 1, 7, 13]
# x:[15, 10, 1, 3, 12, 11, 6, 0, 13, 2, 8, 14, 4, 5, 7, 9] x.sort() #对x本身进行排序 x
运行结果:
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
''' [[6, 6, 8, 7], [5, 9, 4, 2], [1, 0, 5, 6], [8, 6, 8, 2]]''' X.sort()#对X每一行进行排序 X
运行结果:
[[6, 6, 7, 8],
[2, 4, 5, 9],
[0, 1, 5, 6],
[2, 6, 8, 8]]
''' [[6, 6, 8, 7], [5, 9, 4, 2], [1, 0, 5, 6], [8, 6, 8, 2]]''' np.sort(X,axis=0) #每一列进行排序
运行结果:
[[0, 1, 5, 6],
[2, 4, 5, 8],
[2, 6, 7, 8],
[6, 6, 8, 9]]
''' [[6, 6, 8, 7], [5, 9, 4, 2], [1, 0, 5, 6], [8, 6, 8, 2]]''' np.sort(X,axis=1) #每一行进行排序
运行结果:
[[6, 6, 7, 8],
[2, 4, 5, 9],
[0, 1, 5, 6],
[2, 6, 8, 8]]