本文共 3839 字,大约阅读时间需要 12 分钟。
import numpy as np dir(np) # 查看np库中的函数
np.array([['张','男','19'],['李','女','20']],dtype='object') # 当输入不同数据类型的元素时,需要指明数据类型,object使用最多,否则全部转化为字符串np.arange(1,5,0.4) # 随机快速生成数组np.arange(10,0,-1) # 倒序生成 np.linspace(1,8,5) # 第一、二位数是起始和结束位置,第三位意思是等分多少份,包含最后一位np.linspace(1,8,5,endpoint=False) # 不包含最后一位,再等分5份,表示1和8起始点在一个地方#如何查看numpy定义了哪些dtype? np.typeDict # 特殊元素组成的数组,可以是集合和字典等a=np.array([{ 1,2},{ 3,4},{ 5,6}],dtype="object") #注意这里dtype="object"可以省略。 #a是一个一维数组,它的shape是(3,)
a.ndim # 返回数组维度b.shape # 返回一个元组, 表示2行3列a.size # 返回数组包含多少个元素b.dtype #返回数据类型a.itemsize # 表示一个元素占用多少个字节a.size * a.itemsize # 返回数组占用多少个字节
np.nan # 引用缺失值函数a.dtype # 缺失值nan默认为float,所有它会将前面的整数型也转换成浮点型np.array([1,2,None]) # 缺失值None会默认加上 dtype=object,所有库都可以识别out[5]:array([1, 2, None], dtype=object)np.array(['1','2',np.nan]) # 缺失值nan 需要定义类型为object,只有np库或关联的库可识别np.isnan(a) #识别缺失值,只能识别数值型,返回布尔值,应用范围非常小
np.zeros((2,3)) # 生成全部为0的数组,输入的必须为元组的形式np.ones((3,4)) # 生成全部为1的数组np.eye(2) # 生成单位矩阵np.diag([1,2,3,4]) # 生成对角阵np.empty((2,3)) # 随机生成没有初始化的数组
np.random.seed(100) # 指定随机种子,保证每次生成的随机数都是一样np.random.rand(3,4) # 在0到1之间随机生成np.random.uniform(10,50,(4,3)) # 第一、二位是起始范围,第三位元组表示需要生成的行列数np.random.randn(3,4) #标准正态分布np.random.randint(10,30,(3,4)) # 第一、二位是起始范围,第三位元组表示需要生成的行列数np.random.choice(['张三','李四','王五'],10) # 从前面列表中随机抽取10个a= np.array([1,2,3])np.random.shuffle(a) #随机播放,直接影响数组a# 累计求和a.cumsum()
np.argsort(a) # 返回索引值升序排列np.sort(a) # 按元素大小升序,不会改变数组aa.sort() #直接改变数组anp.argsort(b,axis=0) # axis=0,按列排序,返回索引值,=1时,按行排序sorted(b,key=lambda x:x[1]) #默认进行升序排序,可以通过reverse参数进行设定
np.arange(15).reshape(3,5) # 随机生成一个数组,然后划分3行5列np.arange(6).reshape(2,-1) # -1 表示替代列数(函数自行计算列数),此题-1就表示6/2=3列c.ravel() # 多维数组压缩到一维数组np.tile(a,(3,3)) # 按a,行和列分别扩大3倍
a[[0,2]] # 切取不连续的行,取一个不连续的行或列时候就需要用中括号,也就是列表a[1:3,1] # 逗号左边表示行,右边表示列数# 布尔索引c[c[:,0]<0.5] # 切取第一列小于0.5的行
np.concatenate((a,a),axis=0) # axis=0,增加行数,纵向合并np.concatenate((a,a),axis=1) # axis=0,增加行数,横向合并
a+b # a和b都是数组,a和b的对应元素相加a*b # 对应元素相乘# 广播运算,后缘维度相同的两个数组也可以运算,也就是列数相同,又叫沿着第0维度广播a = np.array([[0,0,0], [1,1,1], [2,2,2], [3,3,3]])b= np.array([1,2,3])a+bout[8]:array([[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6]])#某个数组一个维度为1 ,其他维度都相同的两个数组也可以运算,又叫沿着第1维度广播 a = np.array([[0,0,0], [1,1,1], [2,2,2], [3,3,3]])b=np.array([[1],[2],[3],[4]]) a+bout[12]]:array([[1, 1, 1], [3, 3, 3], [5, 5, 5], [7, 7, 7]])
# 一元通用函数包括np.abs、np.sqrt、np.square等。np.add(a,b) # a+b,对应元素相加np.multiply(a,b) # a*b,对应元素相乘np.maximum(a,b) # 两个数组对应位置的元素相比,返回较大值
a.T # 矩阵转置a.transpose(1,0) # 矩阵转置,应用范围更广,三维使用a.astype('str') # 转换数据类型a.tolist() # 转换成列表
np.char.add(a,b) # 连接对应位置的字符串np.char.upper(a) # 转换成大写d=np.char.split(a,sep=" ") # 将字符串转换成列表,sep参数是设置分隔符
# 点积 a.dot(b) # 方法1a @ b # 方法2np.matmul(a,b) # 方法3# 内积运算 一个矩阵乘以另外一个矩阵的转置就是内积np.inner(a,a) # 方法1np.dot(a,a.T) # 方法2# 求行列式和逆矩阵,矩阵必须是方阵np.linalg.det(a) # 行列式np.linalg.inv(a) # 逆矩阵# 二维数组的协方差矩阵data1=np.random.rand(3,10) #随机生成一个二维数组np.cov(data1) #可以将每一行看做一个X,3个X的协方差,输出3*3的列表
sum([1,2,3],5) # 5是起始值,即5+1+2+3=11a = np.array([[1,2,3], [3,4,5]])np.sum(a,1) # 1 表示轴的意思,也就是行相加,列不变,返回([6,12])sum(a,2) # 每列分别相加再加2,返回([6,8,10])np.max(a) # 返回数组中最大的值5a.argmin(a) #返回数组中最小的值1np.max(a,0) # 0 表示0轴的意思,返回每一列的最大值([3,4,5])a.argmax(axis=0) # 返回每一列的最大值的索引([1,1,1],dytype=int64)np.sum(a,axis=0,keepdims=True) # 每列和二维数组out[12]:array([[4, 6, 8]])
转载地址:http://yxqbb.baihongyu.com/