Python基础常识
python中数组切片[:,i] [i:j:k] [:-i] [i,j,:k]
# 逗号“,”分隔各个维度,“:”表示各个维度内的切片,只有:表示取这个维度的全部值,举例说明如下 1.二维数组 X[:,0]取所有行的第0个数据,第二维下标位0的所有数据,第0列(从0开始) X[:,1] 取所有行的第1个数据 X[:,1:]第一维全部取,即所有行,列上从第一列开始取,不要第0列 X[1,:]是取第1维中下标为1的元素的所有数据,第1行(从0开始) X[:2,1:]第一维取下标2之前的,即第2行之前(0,1两行),列上从第一列开始取,不要第0列 2.一维数组 s[i:j] 表示获取a[i]到a[j-1] s[:-1]去掉最后一个字符 s[:-n]去掉最后n个字符 s[-2:]取最后两个字符 s[i:j:k]这种格式呢,i,j与上面的一样,但k表示步长,默认为1 s[::-1]是从最后一个元素到第一个元素复制一遍(反向)
a[2::-1] # 取从下标为2的元素翻转读取
3.三维数组 U[1,1,2]表示第一维取1,第二维取1,第三维取2 U[:,1,2]表示第一维全取,第二维取1,第三维取2 U[:,1:,2]表示第一维全取,第二维取1及1之后的所有值,第三维取2 U[:,1:,:2]表示第一维全取,第二维取1及1之后的所有值,第三维取2之前的值(0,1)
sys.argv[] #就是一个list,sys模块下的一个全局变量,用来获取命令行参数。第一个元素是模块名、后面是依次传入的参数
arg[0] 表示模块名 arg[1]表示第一个命令行参数 arg[1][2:] 表示取第一个命令行参数,但是去掉前两个字节
os.getcwd() # 获得当前工作路径 os.chdir(path) # 改变当前工作目录到指定的路径 os.listdir(path) # 返回指定的文件夹包含的文件或文件夹的名字的列表 os.path.isdir(path) # 判断路径是否为目录 os.path.join(path1[, path2[, ...]]) # 把目录和文件名合成一个路径 set() # 创建一个无序不重复元素集,可进行关系测试 glob.glob() # 模块提供了一个函数用于从目录通配符搜索中生成文件列表 strip() # 用于移除字符串头尾指定的字符(默认为空格)或字符序列。 split() # 通过指定分隔符对字符串进行切片,如果第二个参数 num 有指定值,则分割为 num+1 个子字符串 hstack(tup) #水平(按列顺序)把数组给堆叠起来 vstack(tup) #垂直(按照行顺序)的把数组给堆叠起来 字典(Dictionary) items() # 函数以列表返回可遍历的(键, 值) 元组数组 operator.itemgetter() # 用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号)
python格式的互相转换(array,list,str)
#numpy的array转list left_specturm_train.tolist() #list转numpy的array a = np.array(b) #字符串转list list_convert = a.split() # #list转str str_convert = ''.join(list)
from sklearn.metrics.pairwise import cosine_similarity from sklearn.metrics.pairwise import pairwise_distances a=[[1,3],[2,2]] cosine_similarity(a) array([[ 1. , 0.89442719], [ 0.89442719, 1. ]]) pairwise_distances(a,metric="cosine") array([[ 0. , 0.10557281], [ 0.10557281, 0. ]]) # 使用cosine_similarity,传入一个变量a时,返回数组的第i行第j列表示a[i]与a[j]的余弦相似度 # 使用pairwise_distances,注意该方法返回的是余弦距离,余弦距离= 1 - 余弦相似度,同样传入一个变量a时,返回数组的第i行第j列表示a[i]与a[j]的余弦距离
LabelEncoder 和 OneHotEncoder详解
# LabelEncoder 是对不连续的数字或者文本进行编号 from sklearn.preprocessing import LabelEncoder le = LabelEncoder() le.fit([1,5,67,100]) le.transform([1,1,100,67,5]) # out: array([0,0,3,2,1]) #OneHotEncoder 用于将表示分类的数据扩维: from sklearn.preprocessing import OneHotEncoder ohe = OneHotEncoder() ohe.fit([[1],[2],[3],[4]]) ohe.transform([2],[3],[1],[4]).toarray() # out:[ [0,1,0,0] , [0,0,1,0] , [1,0,0,0] ,[0,0,0,1] ]
python 读excel表
# 方法一:xlrd模块读excel import xlrd data = xlrd.open_workbook("window regulator.xlsx") #打开excel table = data.sheet_by_name("Sheet2")#读sheet nrows = table.nrows #获得行数 result = [] for i in range(1,nrows): # rows = table.row_values(i) #行的数据放在数组里 sku = rows[0] keyword = str(rows[1]).split("-")[1] + " "+ str(rows[2]).replace("|"," ") + " window regulator" kind = rows[3] result.append([sku, keyword,kind]) print(result) # 方法二:pandas模块读excel import pandas as pd import numpy import csv import xlrd #读入sku df = pd.read_excel("window regulator.xlsx",sheetname="Sheet2") #读excel skus = df["sku"].values for sku in skus : df1 = pd.read_csv("sku\\feedback_"+str(sku)+".csv",encoding="utf-8") df1 = df1[(df1.price < 60) & (df1.price >10)] df1.to_csv("sku\\feedback_"+str(sku)+".csv",encoding="utf-8",index = False) #写入到csv
# 方法三:openpyxl进行读写excel,只能是xlsx格式的excel
控制小数点位数
# 利用python中的内置函数,奇数则四舍五入,偶数则取整 round(a, 2) '%.2f' % a
寻找最大值并返回其位置
a = [0.2,0.3,0.4,0.1] print a.index(min(a)) # 返回最小值位置 print a.index(max(a)) # 返回最大值位置
写入浮点数到txt文件
with open('file_path/filename.txt', 'a') as file: write_str = '%f %f\n'%(float_data1, float_data2) file.write(write_str)
从txt文件提取浮点数到numpy数组或list列表
# 1.读txt数据存为numpy数组 a = numpy.loadtxt('odom.txt') # a.shape()可查看形状 b = numpy.reshape(a, (你想要的形状)) # 2.读txt数据存到list里 with open('odom.txt', 'r') as f: data = f.readlines() #txt中所有字符串读入data for line in data: odom = line.split() #将单个数据分隔开存好 numbers_float = map(float, odom) #转化为浮点数