Python
文章平均质量分 57
Satisfying
#自律女孩养成记#
#立刻行动派#
外表平静似水,内心坚定如刚。
展开
-
使用Python寻找列表中最大、小的前K个元素及其索引
因为只需要求前K个大、小元素,Python也有对应的max()/min()函数包,因此只需要循环使用K次max()/min()即可(为了方便,暂且称这种方法为“K次循环法”)。该方法原理简单,且适用性极好,有无重复元素的列表均适用;Python中有heapq.nlargest()和heapq.nsmallest()包方法,heapq包方法是基于堆的概念(放以后细讲)。若列表没有重复元素,该方法使用非常方便,一行代码即可;但若存在重复元素,该方法不能准确输出K个最大值对应的位置索引,因此该方法适用性一般。原创 2023-03-10 14:08:50 · 1642 阅读 · 1 评论 -
Python中赋值、引用、深浅拷贝的区别和联系
Python中的赋值即引用,进行赋值时不会开辟新的内存空间,也不会产生一个新的变量单独存在,只是在原有数据块上打上了一个新标签。当数据块的任意一个标签发生变化时,本质是这个数据块发生变化,那么指向这个数据块的任意标签都会发生变化。浅拷贝常见的形式:切片a=a[:]、工厂函数a=list(a)、copy函数a=a.copy()或a=copy.copy(a)。浅拷贝只拷贝了最外层的对象,子对象只是被拷贝了元素的引用(即对象内的元素没有被拷贝);原创 2023-03-08 22:04:25 · 853 阅读 · 1 评论 -
【20220113】【Python】Python中使用matplotlib作图,如何设置不显示坐标值/坐标刻度?
1. 不显示坐标值plt.xticks([])plt.yticks([])2. 不显示坐标刻度plt.axis('off')3. 举个栗子~import matplotlib.pyplot as pltimport math# 生成信号fs = 1000f = 10t = list(range(0, 1000))t = [x/fs for x in t]a = [math.sin(2 * math.pi * f * x) for x in t]# 作图plt原创 2022-01-13 17:55:29 · 15060 阅读 · 1 评论 -
【20211214】【Python】查找数组中最值元素、中值元素及其索引
一、最大值1. 最大值元素 np.max(lis)2. 最大值索引 np.argmax(lis) 或 np.where(lis==np.max(lis))二、最小值1. 最小值元素np.min(lis)2. 最小值索引np.argmin(lis) 或 np.where(lis==np.min(lis))三、中值1. 中值元素np.median(lis)2. 中值索引 ...原创 2021-12-14 14:25:30 · 4299 阅读 · 0 评论 -
【20211208】【Python】UCI数据集的简单介绍和使用Python保存UCI数据集为.mat文件
一、UCI 数据集介绍进行机器学习学习过程中,会使用到 UCI 公开数据集,UCI 数据集网址:UCI Machine Learning Repository。点击进入之后,页面显示如下:以 iris 数据集为例,点击进入:该页面展示了该数据集的相关信息,包括:数据及相关介绍、相关任务、样本个数、特征个数、是否有缺失值等。常见数据集及其样本个数、特征个数总结:更为详细的数据集介...原创 2021-12-08 21:14:26 · 14168 阅读 · 0 评论 -
【20211130】【Python】int、str 和 bool 类型的相互转换
# int 转 boola, b, c = 0, 1, 2print(bool(a), bool(b), bool(c))# bool 转 inta, b = True, Falseprint(int(a), int(b))# str 转 boola, b, c, d = '0', '1', '2', ''print(bool(a), bool(b), bool(c), bool(d))# bool 转 stra, b = True, Falseprint(str(a), st.原创 2021-11-30 11:23:41 · 1520 阅读 · 0 评论 -
【20211129】【Python】使用Python计算欧氏距离的方法
该问题源于工作中使用 k 折交叉验证选取最优的 KMeans 算法参数,过程中使用欧氏距离来评价参数的优劣。1. 代公式,封装成函数def calEuclidean(x, y): dist = np.sqrt(np.sum(np.square(x-y))) # 注意:np.array 类型的数据可以直接进行向量、矩阵加减运算。np.square 是对每个元素求平均~~~~ return dist2. 调用 numpy 函数库 使用 nu...原创 2021-11-29 11:19:09 · 16769 阅读 · 0 评论 -
【20211127】【Python】Python中常用的矩阵操作,单位阵、对角阵、矩阵的特征值和特征向量、矩阵的协方差
一、生成单位阵numpy.identity(N) 和 numpy.eye(N) 都可以用来产生单位阵,且产生的单位阵都是 np.array() 类型,矩阵元素都是 float 型。import numpy as npa = np.eye(4)b = np.identity(4)print(type(a))print(a)print(type(b))print(b)二、生成对角阵(参考:python生成单位阵或者对角阵的三种方法)三、矩...原创 2021-11-27 14:29:14 · 6589 阅读 · 1 评论 -
【20211125】【Python】Python计算方阵的行列式
此问题源于工作中使用多元高斯模型进行异常检测时,计算多元高斯分布 PDF 时涉及到求方阵的行列式。 假定有方阵A,求 A 的行列式。Python 中使用 numpy 库函数命令实现。import numpy as npA_det = np.linalg.det(A) (参考:python 线性代数:[5]方阵的行列式计算方法)...原创 2021-11-25 19:13:22 · 707 阅读 · 0 评论 -
【20211125】【Python】Python求逆矩阵
此问题源于工作中使用多元高斯模型进行异常检测时,计算多元高斯分布 PDF 时涉及到求方阵的逆。假定有方阵A,求 A 的逆矩阵。Python 中使用 numpy 库函数命令实现。import numpy as np A_1 = np.linalg.inv(A) # 逆矩阵(奇异矩阵没有逆矩阵,不可以用此命令计算)A_2 = np.linalg.pinv(A) # 伪逆矩阵(奇异矩阵也可以使用,但对非奇异矩阵的计算耗时很多) (参考:...原创 2021-11-25 19:10:37 · 2258 阅读 · 0 评论 -
【20211125】【Python】报错pymysql.err.InterfaceError: (0, ‘‘)原因及解决方案
一、报错原因关闭了数据库连接之后又使用数据库操作(数据库连接已过期,导致后续的数据库操作不能正常使用)二、解决方案 1. 重新建立数据库连接; 2. 确认数据库使用完毕之后,再关闭连接。三、举个栗子# 连接数据库data_return = cloudSQL_connect(config)db, cursor = data_return[0], data_return[1]sql = '''SELECT device_id from...原创 2021-11-25 17:57:34 · 5467 阅读 · 1 评论 -
【20211123】【Python】修改list/array中的某些数值时,报错TypeError: can only assign an iterable,原因分析及正确的操作方式
(参考:TypeError: can only assign an iterable)(参考:Python_异常处理:TypeError: can only assign an iterable)原创 2021-11-23 20:47:01 · 2875 阅读 · 1 评论 -
【20211123】【Python】dataframe 修改行名、列名的方法
一、 通过 pandas.DataFrame的属性值 index、columns 修改1. 语法df.index = []df.columns = []2. 举个栗子import pandas as pdimport numpy as npa = np.array([[1, 2, 3, 4, 5], [2, 3, 4, 5, 6], [1, 0, 3, 8, 5]])b = pd.DataFrame(a)print(b)# 方法一:使用属性...原创 2021-11-23 17:36:10 · 14389 阅读 · 0 评论 -
【20211115】【Python】如何去掉字符串两边的引号
使用 eval() ~~~~a = '[0, 1, 2, 3, 4]'print(a)print(type(a)) # str 类型print(eval(a))print(type(eval(a))) # list 类型 (参考:python 去除字符串两端的引号) (参考:python 去除字符串两端的引号)...原创 2021-11-15 21:37:10 · 3900 阅读 · 0 评论 -
【20211115】【Python】Python中列表、矩阵元素相乘及矩阵乘法
1. 列表元素相乘使用 * 或者 np.multiply() 可实现对应元素相乘import numpy as npa = [2, 2, 2, 2, 5]b = 2print(np.multiply(a, b))print(np.multiply(a, a))print(np.array(a)*np.array(a))print(a*a) # 会报错!因为 * 实现对应元素相乘,只适用于 np.array 类型2. 矩阵元素相乘 使用 n...原创 2021-11-15 21:14:44 · 5806 阅读 · 0 评论 -
【20211115】【Python】ValueError: math domain error 报错原因及解决办法
这个问题源于工作中编写的一个功率值转 dB 值的函数,函数输入存在 0 值,而 0 取对数是无意义的!一、报错原因Python 中报错 “math domain error” 通常是由于某些操作不符合数学定义,如:对非正数取对数、对负数开方等等。二、解决办法把 0 替换成一个很小的正数,该问题解决~三、举个栗子import math# 功率值转dB值def fun_pow2db(data_pow, n_dim): ...原创 2021-11-15 17:16:53 · 36726 阅读 · 0 评论 -
【2021115】【Python】Python求列表的均值、中位数、众数
1. 求均值2. 求中位数3. 求众数原创 2021-11-15 16:42:43 · 8199 阅读 · 0 评论 -
【20211106】【Python】差分及在Python中的实现方法
一、差分1. 差分的含义差分是统计学里常用的概念,统计学中的差分是指离散函数后的后一项减去前一项的差;数学中的差分是一种微分方程数值方法,通过有限差分来近似导数,从而寻求微分方程的近似解。 由 Cramer 分解定理,时间序列 = 确定性影响 + 随机性影响。其中确定性影响可以由多项式决定,对多项式求 N 阶差分,就可以变成常数。 (参考:[时间序列分析][5]--非平稳时间序列模型与差分)2. 差分的阶数 ...原创 2021-11-06 16:35:36 · 13298 阅读 · 2 评论 -
【20211106】【Python】使用matplotlib绘制垂直、水平于坐标轴的线
语法: plt.vlines():绘制垂直于 x 轴的线; plt.hlines():绘制平行于 x 轴的线。import numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['SimHei'] # 用于显示中文plt.rcParams['axes.unicode_minus'] = False # 用于显示中文a = np.arange(1, 11)...原创 2021-11-06 11:20:45 · 7804 阅读 · 0 评论 -
【20211106】【Python】numpy ndarray二维数组,按照行、列求平均
语法:np.mean(axis=0):对第 n 列的每行元素求平均。 np.mean(axis=1):对第 m 行的每列元素求平均。import numpy as npa = np.array([[1, 2, 3, 4], [2, 3, 4, 5], [4, 5, 6, 7]])print(a)meanA_row = a.mean(axis=0) # 计算完之后array的长度等于列数meanA_col = a.mean(axis=1) # 计算完...原创 2021-11-06 11:00:56 · 9349 阅读 · 0 评论 -
【20211103】【Python】map 函数的使用
1.描述map() 是 Python 的一个内置函数,会根据提供的函数对指定序列做映射。2. 函数语法map(fun, iterable, ...)3. 参数:(1)fun —— 映射函数(2)iterable —— 一个或多个序列4. 关于返回值Python 2.x 返回列表,可以直接使用;但Python 3.x 返回的是迭代器,需要使用 list() 进行类型转换之后再使用!5. 举个栗子import numpy...原创 2021-11-03 14:20:33 · 284 阅读 · 0 评论 -
【20211103】【Python】range 和 arange 的区别和联系
1. range() 和 arange() 都有三个参数,依次为:start, end(不包含end), step。当不指明 start 时,start 默认为 0,不指明 step 时,step 默认为 1。2. range 返回的是一个 list;arange 返回的是一个 ndarray。3. arange 允许步长 step 为小数,但 range 只允许步长为整数。 (参考:range和arange的区别) (参考:range() 和 np.arange...原创 2021-11-03 14:00:27 · 407 阅读 · 0 评论 -
【20211103】【Python/Matlab】Python 中 numpy.reshape() 和 Matlab 中 reshape(mat) 的区别
1. Python 中 reshapenumpy.arange(n).reshape(a, b) # 依次生成 n 个自然数,并且以 a 行 b 列的数组形式显示''' 常见的用法 ''' reshape(n, -1) # 转化成 n 行reshape(-1, m) # 转化成 m 列举个栗子~import pandas as pdimport numpy as npa = list(range(1, 11, 1))b = np.arange(1, 21, 2)prin原创 2021-11-03 11:41:41 · 611 阅读 · 0 评论 -
【20211029】【Python】删除 DataFrame 中的某行、某列
pandas 中的 drop 方法是很明智的数据清理的方法,它的好处在于:它不改变原有的 df 中的数据,而是返回另一个新的 DataFrame 来存放删除后的数据。一、drop 的用法import pandas as pdimport numpy as npa = list(range(1, 11))a_reshape = np.array(a).reshape(2, 5).Tb = pd.DataFrame(a_reshape)print(b)1. df.d...原创 2021-10-29 14:41:58 · 33778 阅读 · 0 评论 -
【20211028】【Python】统计Series/List类型的数据中某元素出现的个数
1. value_count() 方法pandas 中 value_count() 是一种查看表格某列中有多少个不同值的快捷方法,并计算每个不同值在该列中有多少重复值。注意:value_counts() 是 Series 类型的数据拥有的方法,DataFrame 类型的数据不可以直接用,需要指定对哪一行或哪一列使用(DataFrame 取某列、行之后,就是 Series 类型了)。(参考:pandas中.value_counts()的用法)...原创 2021-10-29 14:14:25 · 6391 阅读 · 1 评论 -
【20211028】【Python】获取DataFrame的行名和列名
1. 获取行名:df.index.values 2. 获取列名:df.columns.values 注意:values 有 's',但没有括号,否则报错!!!!(如下图)import pandas as pdimport numpy as npa = list(range(1, 51))a_reshape = np.array(a).reshape(5, 10).Tprint(a_reshape)b = pd.DataFrame(a_reshape)print...原创 2021-10-28 11:21:51 · 10511 阅读 · 0 评论 -
【20210923】【Python】向上/下取整、四舍五入
1. 向上取整import mathmath.ceil(a)2. 向下取整import mathmath.floor(a)3. 四舍五入round(a)Tips:(1)ceil 和 floor 无法直接调用,需要导入 math 模块;(2)round 可以直接调用。...原创 2021-09-23 18:21:38 · 89 阅读 · 0 评论 -
【20210923】【Python】sort 和 sorted 的区别和联系
一、list.sort() 和 sorted() 都可以用来排序,两者的区别在于:1. .sort() 只能用于 list 类型,sorted() 可以用于任意类型的可迭代对象排序;2..sort() 方法是在原始 list 上面修改列表的值,而sorted() 不修改原始对象,它会开辟新的内存存储排序后的迭代对象。 (参考:Python3 sorted() 函数)二、 对字典分别按照 key、value 排序b = {'1'...原创 2021-09-23 16:29:49 · 521 阅读 · 0 评论 -
【20210914】【Python】Python在DataFrame中新增一列
1. 在 DataFrame 中新增一列,只需要直接指明列名,然后重新赋值就可以了。import pandas as pddata = pd.DataFrame(columns=['a', 'b'], data=[[1, 2], [3, 4]])print(data)我们新增一列,并命名为 'c',赋值为空:data['c'] = ''print(data)''' 注意:添加一列空,应该用空字符串!而不是空列表,否则会报错! '''...原创 2021-09-14 10:03:57 · 15252 阅读 · 0 评论 -
【20210911】【Python】几个合并两个列表命令的区别和联系
一、背景 此问题源于工作中想要合并两个列表的所有元素时使用了 append,但出来的结果不正确,经过调试,发现 append 是在第一个列表后追加了一个列表,而不是把两个列表元素合并,特此记录~二、相关命令 1. append()a = [1, 2, 3]b = [3, 4, 5]c = a.append(b)print(c) 2. extend()a = [1, 2, 3]b = [3, 4, 5]c = a.exte...原创 2021-09-11 14:10:07 · 178 阅读 · 0 评论 -
【20210907】【Python】修改Dataframe符合条件的行、列值
这个问题源于工作中,想要修改某一个 dataframe 的最后一列的值,最后一列是标签(0, 1, 2, 3, 4),想要把大于 1 的标签都置为 1,因为我操作不当,把标签大于 1 的所在行所有值都置成了 1,导致模型训练结果有误,特此记录~1. loc 和 iloc 可以更换单行、单列、多行、多列的值。 两者区别在于:loc 可以通过index 和 columns 获取修改,但 iloc 只能通过索引位置来查找。2. at 和 iat 只可以更换单个值...原创 2021-09-07 15:27:20 · 5278 阅读 · 1 评论 -
【20210907】【Python】获取dataframe的行数和列数
返回行数Num_row = df.shape[0]返回列数Num_col = df.shape[1]原创 2021-09-07 10:11:27 · 5994 阅读 · 2 评论 -
【20210826】【Python】xlsx文件的保存和调用
1. 保存 .xlsx 文件(参考:python如何存储数据为Excel表格文件格式(.xlsx)?)保存 .xlsx 文件使用 openpyxl.Workbook 库函数;from openpyxl import Workbook # 导入库wb = Workbook() # 创建一个xlsx文件ws = wb.active # 激活工作表ws.append(data_list)wb.save('xlsx文件名')2. 调用 .xlsx 文件...原创 2021-08-26 17:46:50 · 1706 阅读 · 0 评论 -
【20210825】【Python】Python中控制小数点输出位数的方法
1. 方法一a = 1.123456b = round(a, 2)# 输出 b = 1.122. 方法二a = 1.123456b = '%.2f' % a# 输出 b = 1.12 (参考:python中实现控制小数点位数的方法)原创 2021-08-25 16:37:59 · 2890 阅读 · 0 评论 -
【20210805】【Python】使用 Python 读取、保存 .mat 文件
1. 读取 .mat 文件from scipy import io as sciomat_fileName = 'K:\data_mat.mat'data = scio.loadmat(mat_fileName ) # 读出来的数据是字典dict型data = data['data'] # 转成narray型2. 保存 .mat 文件# 有一个字典型的数据:data from scipy import io as sciodata_mat = 'K:\data_mat.原创 2021-08-06 08:47:48 · 4255 阅读 · 0 评论 -
【20210805】【Python】list, dataframe, array, mat 的相互转化
一、一般方式1. list 转 array, mat, dataframefrom numpy import *import pandas as pda_list = [[1, 2, 3], [4, 5, 6]]a_array = array(a_list)a_mat = mat(a_list)a_dataframe = pd.DataFrame(a_list)print(a_list)print(a_array)print(a_mat)print(a_dataframe)原创 2021-08-05 18:12:09 · 891 阅读 · 0 评论 -
【20190515】【Python】Python-100-Days(未完待续,持续更新……)
Day011. 输出“hello, world!”知识点:(1) 从输出结果发现,print 函数用双引号 (" ") 或者用单引号 (' ') 都可以,结果是一样的。(见图1)(2) print 函数默认最后有一个换行符,但如果用了 sep 和 end,就没有换行符,必须手加换行符 '\n'。(见图2, 3)# hello world.pyprint("hello, wo...原创 2019-05-15 15:33:04 · 1703 阅读 · 1 评论 -
【20190427】【Python】MOOC学习中的小代码总结(已完结)
============ 知识点见MOOC课程 - PPT ===========一、小程序1. 初识海龟绘图体系(已验证)import turtle #引入海龟绘图体系turtle.setup(650,350,200,200) #设定窗体(宽、高、窗口左上角位置是[200,200])turtle.penup() #画笔抬起turtle.fd(-250) #海龟倒退行驶...原创 2019-04-27 16:21:20 · 1119 阅读 · 2 评论