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) #转化为浮点数

 

posted @ 2019-07-25 14:51  叶小雨  阅读(282)  评论(0编辑  收藏  举报