记录Python零碎的笔记

os 模块

常用函数

  • 判断文件是否存在
    os.path.exists

  • 获取当前目录
    os.getcwd()

  • 打印目录中的所有文件及目录
    os.listdir(os.getcwd())

  • 更改所在目录
    os.chdir('./path')

  • 合并路径
    os.path.join(os.getcwd(),os.listdir(os.getcwd())[0])

综合示例

进入当前文件夹内的第一个文件夹

1
2
3
4
5
6
7
8
9
10
11
import os
os.getcwd()
a = os.listdir('./')
print a
i = 0
while not os.path.isdir(os.path.join(os.getcwd(), a[i])):
i += 1
if i == len(a):
break
os.chdir(os.path.join(os.getcwd(), a[i]))
print os.listdir('./')

zipfile模块

常用函数

  • 压缩文件
    zipfile.ZipFile(zipfilename,'w').write(filename)

  • 解压文件
    zipfile.ZipFile(zipfilename).extractall('./dic_path')

综合示例

讲当前目录中的python文件全部压缩起来,然后解压

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import zipfile
import os
def zip_all_py(filename):
if os.path.exists(filename):
os.remove(filename)
with zipfile.ZipFile(filename, 'w') as f:
for i in os.listdir('./'):
if i[-3:] == '.py':
f.write(i)
filename = 'all_py.zip'
zip_all_py(filename)
zf = zipfile.ZipFile(filename)
zf.namelist()
zf.extractall('./all_zip')
zipfile.ZipFile(filename).extractall('./all_zip')

tensorflow

  • softmax
    用于对 多类问题的分类
    $$softmax(x)=normalize(\exp(x))$$
    $$softmax(x_i)=\frac{\exp(x_i)}{\sum_i\exp(x_i)}$$

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import tensorflow as tf
    import numpy as np
    import matplotlib.pyplot as plt
    x=np.linspace(1,10,10)
    with tf.Session() as sess:
    y=sess.run(tf.nn.softmax(x))
    plt.plot(x,y,label='tensorflow')
    plt.plot(x,np.exp(x)/sum(np.exp(x)),'.',label='numpy')
    plt.legend()
    plt.show()
  • argmax
    计算传入矩阵某个轴向最大值的位置,axis=0表示某一列的最大值

    1
    2
    3
    4
    import tensorflow as tf
    import numpy as np
    with tf.Session() as sess:
    print sess.run(tf.argmax(np.eye(3),0))
  • reduce_mean/reduce_max
    在传入矩阵的某一维度计算函数(如果没指定则为整个矩阵)

    1
    2
    3
    4
    5
    import tensorflow as tf
    with tf.Session() as sess:
    print sess.run(tf.reduce_mean([[1.,2.],[3.,4.]])) #2.5
    print sess.run(tf.reduce_mean([[1.,2.],[3.,4.]],0))#[2.,3.]
    print sess.run(tf.reduce_mean([[1.,2.],[3.,4.]],1))#[1.5,3.5]

  • 讲一个一维行向量转置成一个列向量
    1
    2
    3
    import numpy as np
    print np.linspace(0,1,10).reshape(-1,1)
    print np.linspace(0,1,10).reshape(-1,2)

这里-1表示合适的值