说在前面

在开发之前, 要去python库官网上查看是否有帮助的库。 结合百度和pypi.org网站直接寻找需要的库。

库安装方法:1pip安装 2.文件安装:UCI页面需要翻墙  https://www.lfd.uci.edu/~gohlke/pythonlibs 或者conda提供的那些网站也行。

文件安装:下载UCI、whl文件之后,又要使用 pip install 文件来安装  放到lib文件夹

vscode特殊:通常把要处理的文件放在一个工作文件下,方便输出文件位置和调用。

一、文件操作

1.1 目录库 os: import os

os.path :用于获取文件的基本信息

import os
输出文件的绝对路径:os.path.abspath(path);
file_path = os.path.abspath('test.py')
print(file_path)
>>> c:\Users\YHW\Desktop\test_`1

也可以直接存储文件路径:右键文件,属性,查看完整地址复制过来
file_path = "C:\\Users\\YHW\\Desktop\\matlabprg"
python中转义字符在自己输入时\\需要成对输入,不然会有报错,或者/反斜杠表示替代


文件存在标志:os.path.exists(path)	
如果路径 path 存在,返回 True;如果路径 path 不存在,返回 False。
print(os.path.exists('test.py'))
>>> True

获取工作文件夹路径:
print(os.getcwd())
c:\Users\YHW\Desktop\test_`1

合并文件目录路径和文件名:
file_path = os.path.join( os.getcwd(),"corpus_POS.txt" ) #据编译器决定是否添加/分隔
print(file_path)
c:\Users\YHW\Desktop\test_`1\corpus_POS.txt

Linux系统下常见,把path中包含的"~"和"~user"转换成用户目录:
os.path.expanduser("路径")
根据环境变量的值替换path中包含的"$name"和"${name}":
os.path.expandvars("路径")

文件路径切分成路径和文件名:
os.path.spilt("路径")
spilt并非os下才能使用!
返回一个元组,进行读取即可

修改当前工作文件夹目录:

查看当前工作目录
file = os.getcwd();
file = print("当前工作目录为 %s" % file)
>>> c:\Users\YHW\Desktop\test_`1

修改当前工作目录
os.chdir( "c:\Users\YHW\Desktop\matlabprg" )

返回某个文件夹中包含的文件名字的列表:

path = "c:\\Users\\YHW\\Desktop\\test_`1"
dirs = os.listdir( path )
for file in dirs:
   print (file)
>>>
.vscode
1_tutorial_1or2hours.ipynb
animalphoto
dvsc.ipynb
animal_model.h5
test.py

创建文件夹:

path = "路径"
#一般与文件是否存在结合
os.path.exists(path)
if(False):
    os.mkdir( path, 0755 )#0755mode设置权限,查表

进程管理:

进程管理 python文件打开其他文件或者软件的操作 调用其他程序
import os
os.system("文件路径")
还有许多其他的函数
os.cpu_count() CPU数量
os.getlogin() 获得用户登录名
print(os.getlogin())
print(os.path.abspath('kalman.py'))

csv文件:二维列表     csv格式:逗号分割标准格式,类似表格

1.2 文件IO库

——除了python自带的open()函数以外,其他的库都会提供自己的文件读取流也可以。

pandas打开文件
import pandas as pd
pd.read_excel("Excel文件路径名") 用pandas可以打开各种文件

numpy打开文件(仅npk:用于存储重建 ndarray 所需的数据、图形、dtype 和其他信息。)
import numpy as np
a = np.array([1,2,3,4,5]) 
np.save('outfile.npy',a) 
b = np.load('outfile.npy')  
print (b)

也可以用open
file_txt = open("路径/文件名","r", encoding="utf-8").read() 
参数:文件位置、打开选项(读写选择),编码方式
file_txt.close()

file = "c:\\Users\\YHW\\Desktop\\test_`1"
f_test = open(file, "r", encoding="UTF-8")
f_test = open(FILENAME, "r", encoding="UTF-8")

realine读入一行
f_test.readline() 
read读取指定的字符大小
txt =f_test.read() 
readlines读取所有行,每一行为一个字符串,所有字符串形成列表
list=[]
list = f_test.readlines()

写一样 
f.write(string)   
f.writelines(list)   
f.seek(参数)更改文件位置指针的位置

文本数据的一个常规操作:for把每一行读进来,把每一行的末尾\n换成空格,然后每一行用逗号分割,用readlines()效果一样

FILENAME = "machinelearning_add"
fo = open(FILENAME, encoding="UTF-8")
ls=[]
for line in fo:
    line = line.replace("\n"," ")
    ls.append(line.split(","))
fo.close()
ang=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
for item in ang:
    print(ls[item])

输出结果如下:

python os 库 教程 python os库怎么安装_python os 库 教程


二、数组Numpy库

2.1 创建数组,所有科学工具的基本: import numpy as np

创建数组,一维二维三维取决于内部中括号个数
a = np.array([[1,2,2],[2,5,7],[7,83,1]], dype = int)
dytpe选择内部的数据类型,甚至可以表示复数:complex64等
print (a)
>>>[[ 1  2  2]
 [ 2  5  7]
 [ 7 83  1]]

列表转数组:
a = [1,2,3,4,5]
ma = np.array(a)

注意区分“数组”和“矩阵”的区别,主要取决于数组类型和维度,下面的shape参数介绍

结构体数组:numpy 的数值类型实际上是 dtype 对象的实例,可以使用dype当做初始化函数
student = np.dtype([('age', 'int8'), ('marks', 'float')]) 
a = np.array([(21, 50),(18, 75)], dtype = student) 
print(a)


创建数组,有序数组:arrange()
a = np.arange(5)
>>> [0 1 2 3 4]


0,1元素数组:
numpy.zeros(shape, dtype = float, order = 'C') 默认为浮点数,order排序方式
numpy.ones(shape, dtype = None, order = 'C')
x = np.ones([2,2], dtype = int)
y = np.zeros((5,5), dtype = int) 
自定义数据类型
z = np.zeros((2,2), dtype = [('x', 'int8'), ('y', 'float')])  
print(z)
z是二维矩阵,每一个元素是一个int和float组成的一个小元组元素。
>>> [[(0, 0.) (0, 0.)]
 [(0, 0.) (0, 0.)]]

2.2 创建矩阵:

import numpy as np

import numpy.matlib

零矩阵和1矩阵
numpy.matlib.zeros(2,3)
numpy.matlib.ones(3,3)

单位矩阵:
numpy.matlib.eye() 函数返回一个矩阵,对角线元素为 1,其他位置为零。
print (np.matlib.eye(3, dtype =  float))
>>> [[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]

随机矩阵:
np.matlib.rand(3,3)

2.3 数组工具:

数组的rank秩:
ndarray.ndim

调整大小,重构数据大小reshape,重构大小必须满足!“列表转数组 数组行列乘积个数一样”两个条件!
a = np.arange(5)  
b = a.reshape(1,5)
c = a.reshape(5,1)

d = np.array([[1,2],[4,5],[6,89]]).reshape(3,2)
f1 = np.arange(12).reshape(3,4)
f2 = np.arange(12).reshape(2,6)
>>> a = [0 1 2 3 4] 

 [[0 1 2 3 4]]

[[0]
 [1]
 [2]
 [3]
 [4]]

d = [[ 1  2]
 [ 4  5]
 [ 6 89]]

f1 = [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

f2 = [[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]]

数组格式,数组维度查看:shape
print (e.shape)
>>> (3, 2) 三行两列
a = np.arange(5)
a.shape
>>> (5,) 列表型数组,和列表类似,但是不属于矩阵,无法参与矩阵运算

其他类型转数组(列表转数组、元组转数组等)
a = range(0,5,1) 
a = np.asarray(a)  
print (a)
>>> [0 1 2 3 4]

2.4 数组的索引迭代、展平和组合: 

切片索引与列表一样
a = np.arange(10)  
从索引 2 开始到索引 7 停止,间隔为 2
b = a[2:7:2] 
双列索引
c = c[0:10, 2:6]
分号左边是行索引,从0开始到10-1=9行;右边列索引,从第2列开始到第5列
print(b,c)

单个索引
f = np.arange(12).reshape(3,4)
f = f.reshape(2,6)
f[1][3]=522
>>> [[  0   1   2   3   4   5]
 [  6   7   8 522  10  11]]

访问数组中的每一个元素:数组迭代循环
nditer()有可选参数
for x in np.nditer(a):
    print (x, end=", " )

数组展平:展开数组,两个函数拷贝与不拷贝的关系
ndarray.flatten()
ndarray.ravel()


找到列表中最大值的索引:最小值也是一样(注意从0开始索引)
a = [1,2,3,4,5]
ma = np.array(a)
a.index(max(ma))

找到数组中的最大值:
max = ma.max()

找到最大值对应的索引值(序号):
默认axis是对整个数组索引,输入axis就是按axis轴进行最大值的索引
max = np.argmax(ma, axis = )

转置:
b = 某个二维数组.T

2.5 数组计算、矩阵计算:

运算符直接使用:a*b  a+b a-b的结果就是 a 与 b 数组对应位相乘。(按位乘)

触发广播机制,如果两个数组维度不同,就把维度低的补齐到可以按位乘
a = np.array([[ 0, 0, 0],
           [10,10,10],
           [20,20,20],
           [30,30,30]])
b = np.array([1,2,3])
print(a * b)
>>> [[ 0  0  0]
 [10 20 30]
 [20 40 60]
 [30 60 90]]

2.6 多维数组计算:通过np提供的方法才能进行(与矩阵的运算方法一样)

矩阵乘法:dot()函数。矩阵乘法参考线性代数
a = [[1, 0], [0, 1]]
b = [[4, 1], [2, 2]]
c=np.dot(a, b)
>>> [[4 1]
 [2 2]]

a = [[1, 0], [0, 1]]
b = [[4], [22]]
c=np.dot(a, b)
print(c)
>>> [[ 4]
 [22]]

加减乘除:add(a,b),subtract(a,b),dot(a, b),divide(a,b)

矩阵点积:对应位置元素相乘
a = np.array([[1,2],[3,4]]) 
b = np.array([[11,12],[13,14]]) 
print (np.vdot(a,b))

逆矩阵:
x = np.array([[1,2],[3,4]]) 
y = np.linalg.inv(x) 
>>> [[-2.   1. ]
 [ 1.5 -0.5]]

2.7 其他计算函数:

将整形转换为其他进制:
print ('13 和 17 的二进制形式:')
a,b = 13,17
print (bin(a), bin(b))
print ('13 和 17 的位与:')
print (np.bitwise_and(13, 17))

>>> 13 和 17 的二进制形式:
0b1101 0b10001

13 和 17 的位与:
1

bitwise_or()按位或
invert()取反
left_shift() 左移 同右移


统计函数:
numpy.mean(ndarray) 平均数
numpy.average(ndarray) 加权平均数
np.std([1,2,3,4]) 标准差
np.var([1,2,3,4]) 方差

三、绘图库matlpotlib

import numpy as np 
from matplotlib import pyplot as plt 
 
x = np.arange(1,11) 
y =  2  * x +  5 
z = 3 * x**2 + 2
plt.title("This is title don't support chinese") 
plt.xlabel("x axis ") 
plt.ylabel("y axis ") 
plt.plot(x,y,"ob") 
plt.plot(x,z,"-g")
绘图命令
plt.show()

通过plot后面的选项可以设置颜色和线段类型,下图

python os 库 教程 python os库怎么安装_python os 库 教程_02

 


四、 python其他常见库:

4.1 random库、时间函数库:

#random库的补充
import numpy as np #random的随机库生成数组形式的随机
import random as rd
#1.设置了相同随机数种子的随机数,会产生相同的随机数
#如果不设置种子,那么就会产生随机的
rd.seed(10)
a= rd.random()
rd.seed(10)
b = rd.random()
c= rd.random()
print(a, b, c)
#2.各个函数
rd.randint(1,5)#整数随机
rd.uniform(3,5)#产生a~b之间的随机float数
rd.shuffle([1,4,5,12,8])#随机排序

#时间函数,包括获取时间,性能优化等
import time
time.perf_counter()

#复数
z = 3.2 + 2.3j
print(z.real, z.imag)
  1. )4.2 exe可编译python程序打包库:pyinstaller

pip install pyinstaller

常用的指令:

-F name,-onefile 产生单个的可执行文件

-D dirname,--onedir 产生一个目录(包含多个文件)作为可执行程序

-i <xxx.ico> 产生的文件用xxx图片作为图标

命令行里使用  pyinstaller -i <image_name.ico> -F file_name.py