numpy基础知识1:创建数组
import numpy as np
#数组的基本属性
#二维数组
A = np.array([[1,2,3],[4,5,6]])
print('A=\n',A)
print('数组的尺寸(几行几列):',A.shape)
print('查看第一个维度的大小(即行数):',A.shape[0])
print('查看第二个维度的大小(即列数):',A.shape[1])
print('数组的维数:',A.ndim)
print('元素的类型',A.dtype)
print('元素的总个数:',A.size)
print('每个元素的字节数:',A.itemsize)
print('数组所有元素的总字节数:',A.nbytes)
print('='*20,'分界线','='*20)
#一维数组
a = np.array([3.1,2.7,6.5])
print('a=',a)
print('数组的尺寸(几行几列):',a.shape)
print('查看第一个维度的大小(即行数):',a.shape[0])
print('数组的维数:',a.ndim)
print('元素的类型',a.dtype)
print('元素的总个数:',a.size)
print('每个元素的字节数:',a.itemsize)
print('数组所有元素的总字节数:',a.nbytes)
print('='*20,'分界线','='*20)
#转换数组的类型
#(1)定义的同时转换数组元素的类型
a = np.array([1,2,3],dtype=float)
print('a=',a)
#(2)数组定义好之后转换数组元素的类型
b = np.array([2.1,3.7,6.5])
print('b=',b)
c = b.astype(int) #这里不是四舍五入,只是保留整数部分
print('c=',c)
print('='*20,'分界线','='*20)
#创建数组
#(1)用array创建数组
A = np.array([[[1,2,3],[4,5,6]],[[1,3,5],[2,4,6]]])
print('三维数组A=\n',A)
# 创建数组并指定维数
B = np.array([1,2,3],ndmin=3)
#重新设置数组的尺寸
A = np.array([[1,2,3],[4,5,6]])
print('原来的A=\n',A)
A.shape=3,2
print('改变后的A=\n',A)
print('='*20,'分界线','='*20)
#(2)用arange创建数组
a = np.arange(12)
print('a=',a)
#改变形状:方法一
a.shape=3,4
print('a=',a)
#方法二(不改变原始的a)
A = np.reshape(a,(2,6))
print('A=\n',A)
#(3)用linspace创建等差数组
#生成0-10之间的10个数
D1 = np.linspace(0,10,11)#(包含10)
print('D1=\n',D1)
D2 = np.linspace(0,10,5,retstep=True)
print('D2=\n',D2)
#retstep默认为False,不显示步长
#endpoint默认True,包含终点
#(4)用logspace创建等比数组
print('='*20,'分界线','='*20)
#1.创建全0数组
A = np.zeros((2,3)) #创建2行3列的全0数组
print('A=\n',A)
#2.创建全1数组
B = np.ones((2,3)) #创建2行3列的全1数组
print('B=\n',B)
#3.创建单位矩阵
C = np.eye(4) #创建4行4列的单位矩阵
print('C=\n',C)
#4.创建对角矩阵
D = np.diag((1,2,3,4))
print('D=\n',D)
#5,创建空数组
E = np.empty((3,2))
print('空数组E=\n',E)
#创建元素全为2的数组
E.fill(2)
print('空数组E=\n',E)
#6.创建同型数组
A = np.array([[1,2,3],[4,5,6]])
#(1)生成与A同型的全0数组
A1 = np.zeros_like(A)
print(A1)
#(2)生成与A同型的全1数组
A2 = np.ones_like(A)
print(A2)
#(3)生成与A同型的空数组
A3 = np.empty_like(A)
print(A3)
numpy基础知识2:生成随机数组及数组的拼接
#生成随机数组
import numpy as np
np.set_printoptions(2)
#1.随机生成0-1的小数
a = np.random.random(6) #一维数组
print(a)
A = np.random.random((3,4)) #生成3行4列的二维随机数组
print(A)
print('='*20,'分界线','='*20)
#2.随机生成指定范围的小数
#生成 5-10之间的随机小数
b = np.random.uniform(5,10,2)
print(b)
B = np.random.uniform(5,10,(3,3))
print(B)
print('='*20,'分界线','='*20)
#3.随机生成指定范围的整数
#生成0-20之间的随机整数
c = np.random.randint(0,20,5)
print(c)
C = np.random.randint(0,20,(3,3))
print(C)
print('='*20,'分界线','='*20)
#4.随机生成均匀分布
d = np.random.rand(6)
print(d)
#5.随机生成正态分布
e = np.random.randn(5)
print(e)
#6.随机种子
np.random.seed(1)
A = np.random.randint(1,10,(2,3))
print('A=\n',A)
#数组的拼接
A = np.zeros((3,3))
B = np.ones((3,3))
#(1)垂直拼接(上下合并)
#方法一:
C1 = np.r_[A,B]
print('C1=\n',C1)
#方法二:
print('='*20,'分界线','='*20)
C2 = np.vstack([A,B])
print('C2=\n',C2)
#方法三:
print('='*20,'分界线','='*20)
C3 = np.concatenate([A,B],axis=0)
print('C3=\n',C3)
print('='*20,'分界线','='*20)
#(2)水平拼接(左右合并)
#方法一:
D1 = np.c_[A,B]
print('C1=\n',C1)
#方法二:
print('='*20,'分界线','='*20)
D2 = np.hstack([A,B])
print('C2=\n',C2)
#方法三:
print('='*20,'分界线','='*20)
D3 = np.concatenate([A,B],axis=1)
print('C3=\n',C3)
numpy基础知识3:数组的索引切片以及升降维
import numpy as np
#1.一维的索引和切片
# 1-12,12个数
a = np.arange(1,13)
print('a=\n',a)
#(1)索引 下标从零开始
print('获取第3个元素:',a[2])
print('获取最后1个元素:',a[-1])
#(2)切片
print('获取第4个到第8个元素',a[3:8]) #前包后不包
print(a[:]) #顺序全取
print(a[::-1]) #倒序全取
#2.二维的索引和切片
A = a.reshape(3,4)
print('A=\n',A)
#(1)索引
print('获取第2行第3列元素',A[1,2])
print('获取第1行的元素',A[0,:])
print('获取第2列的元素',A[:,1])
print('获取最后一列的元素',A[:,-1])
#2.切片
print('获取前2行,前3列的元素\n',A[:2,:3])
print('获取6,7,10,11元素\n',A[1:3,1:3])
#3.改变数组的形状
#(1)一维变多维
a = np.arange(1,13)
#变二维
A = a.reshape(2,6)
print('A=\n',A)
#变三维
AA = a.reshape((3,2,2))
print('AA=\n',AA)
#(2)多维变1维
#二维变一维:展平
A=np.array([[2,-1,0],[1,3,1],[0,1,2]])
#方法一:
b = A.ravel()
print('b=',b)
#方法二:
c = A.flatten()
print('c=',c)
numpy基础知识4:数组元素的数学运算及统计值
import numpy as np
np.set_printoptions(3) #保留三位小数
a = np.array([1,2,3,4,5])
print('a=',a)
#1.幂函数
print('='*20,'1.幂函数','='*20)
#(1)算数平方根(根号)
print('每个元素的算数平方根:',np.sqrt(a))
print('每个元素的算术平方根:',a**(1/2))
print('每个元素的算术平方根:',np.power(a,1/2))
#(2)平方
print('每个元素的平方:',np.square(a))
print('每个元素的算术平方:',a**2)
print('每个元素的算术平方:',np.power(a,2))
#(3)立方根
print('每个元素的算术立方根:',a**(1/3))
print('每个元素的算术立方根:',np.power(a,1/3))
print('='*20,'2.指数函数','='*20)
#2.指数函数
print('e=e^1=',np.exp(1))
print('='*20,'3.对数函数','='*20)
#3.对数运算
print('ln1=',np.log(1))
print('lne=',np.log(np.exp(1)))
print('以2为底的对数log2(8)=',np.log2(8))
print('='*20,'4.绝对值函数','='*20)
#4.绝对值运算
print('|-7|=',np.abs(-7))
a = np.array([-1,-2,-3,-4])
print('|a|=',np.abs(a))
print('='*20,'5.符号函数','='*20)
#5.符号函数
print('a的符号函数:',np.sign(a))
print('='*20,'6.三角函数','='*20)
#6.三角函数运算
#正弦函数
print('sin0=',np.sin(0))
print('sinΠ=',np.sin(np.pi))
#余弦函数
print('cos2Π',np.cos(2*np.pi))
print('cosΠ/2',np.cos(np.pi/2))
print('='*20,'7.比较大小','='*20)
#7.比较大小
#10-20之间的5个随机整数
a = np.random.randint(10,20,size=5)
b = np.random.randint(10,20,size=5)
print('a=',a)
print('b=',b)
print(np.maximum(a,b)) #一个个元素进行逐一比较,返回较大的数
print(np.minimum(a,b)) #一个个元素进行逐一比较,返回较小的数
print('='*20,'统计相关函数','='*20)
#统计相关函数
#1.一维的情况
a = np.arange(1,6)
print('a=',a)
print('元素的和:',np.sum(a))
print('元素的最大值:',np.max(a))
print('元素的最小值:',np.min(a))
print('元素的平均值:',np.mean(a))
print('元素的中位数:',np.median(a)) #按照从小到大顺序排列,位于中间位置的数
print('元素的方差:',np.var(a))
print('元素的标准差:',np.std(a)) #标准差=根号下方差
print('='*20,'分界线','='*20)
#2.二维的情况
A = np.array([[2,-1,0],[1,3,1],[0,1,2]])
print('A=\n',A)
print('所有元素的和:',np.sum(A))
print('每行元素的和:',np.sum(A,axis=1))
print('每列元素的和:',np.sum(A,axis=0))
print('所有元素最大值所在的位置(索引)',np.argmax(A))
print('所有元素的最大值',np.max(A))
print('每行元素的最大值',np.max(A,axis=1))
print('每列元素的最大值',np.max(A,axis=0))
print('所有元素的最小值',np.min(A))
print('所有元素最小值所在的位置(索引)',np.argmin(A))
print('每行元素的最小值',np.min(A,axis=1))
print('每行元素的最小值所在的位置(索引)',np.argmin(A,axis=1))
print('每列元素的最小值',np.min(A,axis=0))
print('每列元素的最小值所在的位置(索引)',np.argmin(A,axis=0))
print('='*20,'分界线','='*20)
#3.叠加和叠乘
#一维的情况
a = np.array([1,3,5,7])
print('a=',a)
print('叠加',np.cumsum(a)) #第i个位置的数就是a中前i个数相加
print('叠乘',np.cumprod(a)) #第i个位置的数就是a中前i个数相乘
#二维的情况
A = np.array([[1,2,3],[4,5,6],[7,8,9]])
print('每列元素的叠加',np.cumsum(A,axis=0))
print('所有元素的叠乘',np.cumprod(A))
print('所有元素的叠加',np.cumsum(A))
print('每列元素的叠乘',np.cumprod(A,axis=0))
print('每行元素的叠加',np.cumsum(A,axis=1))
print('每行元素的叠加',np.cumsum(A,axis=1))
print('='*20,'分界线','='*20)
#4.排序
a = np.random.randint(1,10,15)
print('a=',a)
b = np.sort(a)
print('升序排序后输出',b)
c = b[::-1]
print('降序排序后输出',c)