CS_Python_Basic
Python
pip
pip list 查看安装了哪些包
pip show 查看这个包相关
Python函数和语法
Typora 生成目录只需要在顶端输入[TOC]别的什么都不用输入
excel
command + D 向下复制
分列
获取数据类型
type()
Class(object):中object的作用
# -.- coding:utf-8 -.-
# __author__ = 'zhengtong'
class Person:
"""
不带object
"""
name = "zhengtong"
class Animal(object):
"""
带有object
"""
name = "chonghong"
if __name__ == "__main__":
x = Person()
print "Person", dir(x)
y = Animal()
print "Animal", dir(y)
输出
Person ['__doc__', '__module__', 'name']
Animal ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__',
'__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',
'__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'name']
Person类很明显能够看出区别,不继承object对象,只拥有了__doc__ , module 和 自己定义的name变量, 也就是说这个类的命名空间只有三个对象可以操作.
Animal类继承了object对象,拥有了好多可操作对象,这些都是类中的高级特性。
if name == ‘main’: 的作用
__name__是系统内置变量,代表所在模块名字,也即所在文件名。
### demo_list.py
b=[]
b.append("test")
b.append("apple")
b.append("banana")
for a in b:
print(a)
def fact(n):
if n == 1:
return n
else:
return n * fact(n-1)
print("阶乘:", fact(3))
print('__name__是模块名字(文件名),值为:'+__name__)
### function_test.py
from demo_list import fact
if __name__=='__main__':
print('当前执行文件名:' + __name__)
print("阶乘:", fact(3))
当模块直接运行时,demo_list.py文件被直接运行,__name__的值为__main__;
当模块被导入到其他文件,如demo_list被导入到function_test.py中,并且程序在function_test.py被执行时, demo_list.py中的__name__的值为demo_list,为其模块名,而不是__main__。而function_test.py的__name__的值为__main__,因为程序从function_test.py开始执行。
被作为模块导入的文件当中的if __name__=='__main__':里面的代码不会执行
zip()
函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 ***** 号操作符,可以将元组解压为列表。
>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b) # 返回一个对象
>>> zipped
# 这个对象可以直接被迭代
>>> for i in zipped:
print(i)
>>> list(zipped) # list() 转换为列表
[(1, 4), (2, 5), (3, 6)]
>>> list(zip(a,c)) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> a1, a2 = zip(*zip(a,b)) # 与 zip 相反,zip(* ) 可理解为解压,返回二维矩阵式
# 在zip(* )这个里面写东西会被解压,就是(* )里面
>>> list(a1)
[1, 2, 3]
>>> list(a2)
[4, 5, 6]
>>>
enumerate() 方法
enumerate的中文意思是枚举
>>>seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1)) # 下标从 1 开始
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
() is 元组
argmax() 是使得 f(x)取得最大值所对应的变量点x(或x的集合)。arg即argument,此处意为“自变量”。
with语法
有一些任务,可能事先需要设置,事后做清理工作。对于这种场景,Python的with语句提供了一种非常方便的处理方式。
with 语句实质是上下文管理。
1、上下文管理协议。包含方法__enter__() 和 __exit__(),支持该协议对象要实现这两个方法。
2、上下文管理器,定义执行with语句时要建立的运行时上下文,负责执行with语句块上下文中的进入与退出操作。
3、进入上下文的时候执行__enter__方法,如果设置as var语句,var变量接受__enter__()方法返回值。
4、如果运行时发生了异常,就退出上下文管理器。调用管理器__exit__方法。
自定义类必须包含上述几个方法才能正确使用with关键字。
contex :上下文
class Mycontex(object):
def __init__(self,name):
self.name=name
def __enter__(self):
print("进入enter")
return self
def do_self(self):
print(self.name)
def __exit__(self,exc_type,exc_value,traceback):
print("退出exit")
print(exc_type,exc_value)
if __name__ == '__main__':
with Mycontex('test') as mc:
mc.do_self()
Convolutional Neural Networks, CNN 卷积神经网络
self的含义
class A():
def song(one):
print(one)
def sing(self,one):
print(one)
a=A()
A.sing(a,"hello") #注意这条语句
a.sing("hello")
self差不多就是java里的this
类方法里面第一个参数必须是self
切片
切片操作基本表达式:object[start_index:end_index:step]
端点是关于对象,起点终点是关于切片
step:正负数均可,其绝对值大小决定了切取数据时的‘‘步长”,而正负号决定了“切取方向”,正表示“从左往右”取值,负表示“从右往左”取值。当step省略时,默认为1,即从左往右以步长1取值。“切取方向非常重要!”“切取方向非常重要!”“切取方向非常重要!”,重要的事情说三遍!
start_index:表示起始索引(包含该索引对应值);该参数省略时,表示从对象“端点”开始取值,至于是从“起点”还是从“终点”开始,则由step参数的正负决定,step为正从“起点”开始,为负从“终点”开始。郑州做人流医院哪家好 http://www.020gzzj.com/
end_index:表示终止索引(不包含该索引对应值);该参数省略时,表示一直取到数据“端点”,至于是到“起点”还是到“终点”,同样由step参数的正负决定,step为正时直到“终点”,为负时直到“起点”。
>>>a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
切取单个元素
>>>a[0]
>>>0
>>>a[-4]
>>>6
当索引只有一个数时,表示切取某一个元素。
start_index和end_index全为正(+)索引的情况
>>>a[:6]
>>> [0, 1, 2, 3, 4, 5]
#step=1,表示从左往右取值,而start_index省略时,表示从端点开始,因此这里的端点是“起点”,即从“起点”值0开始一直取到end_index=6(该点不包括)。
>>>a[6:]
>>> [6, 7, 8, 9]
step=1,从左往右取值,从start_index=6开始,一直取到“终点”值9。
>>>a[:6:-1]
>>> [9, 8, 7]
step=-1,从右往左取值,而start_index省略时,表示从端点开始,因此这里的端点是“终点”,即从“终点”值9开始一直取到end_index=6(该点不包括)。
start_index和end_index正(+)负(-)混合索引的情况
>>>a[1:-6]
>>> [1, 2, 3]
start_index=1在end_index=-6的左边,因此从左往右取值,而step=1同样决定了从左往右取值,因此结果正确
PyCharm
option+command+L 自动格式化代码
File->Settings->Editor->general->EditorTabs->Mark modified(*) 提醒文件是否修改过
command+, 打开设置
Anaconda
mac包默认安装路径: /Users/zhizekai/opt/anaconda3/lib/python3.7/site-packages
Numpy
Pandas
Dataframedata.isna().sum() 统计每一列有没有空值
test_dataset = dataset.drop(train_dataset.index) 删除某个行标签的数据
test_dataset = dataset.drop(columns="Weight") 删除某一列
train_dataset = dataset.sample(frac=0.8,random_state=0) 随机抽样,frac 取样本的80%
pre_train_data.keys() 和 pddata.columns 效果一样 获取column label
pddata.iloc[1:,0] 第二行到最后,第一列
pcadata[["净利润增长率(%)_Netprfgrrt"]] 取子集 好处是能取多列
pcadata.info() object类型就是有空格
concat 连接 axes=0,=1
TensorFlow
设置GPU按需增长
# 设置GPU按需增长
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
MatplotlIb
保存图片
import matplotlib.pyplot as plt
""" 一些画图代码 """
plt.savefig("filename.png")
plt.show()
Jupiter lab 图像显示选择和变量输出
#在里面显示
%matplotlib inline
#在外面显示
# %matplotlib auto
# 输出一个cel中的全部变量
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = 'all'
散点图
# 画散点图
def plant_fig():
plt.style.use('ggplot') # 好看的风格主题
# [-1,1] 消极到积极 [0,1] 客观到主观
plt.figure(figsize=(10,10))
# 先是x轴,然后是y轴
plt.plot(pre_train_data["polarity"][pre_train_data["star"] == 5],
pre_train_data["subjectivity"][pre_train_data["star"] == 5], 'bo',label=5) # bo是蓝色的O型
plt.xlabel("polarity")
plt.ylabel("subjectivity")
plt.title('Sentence emotion')
plt.legend() # 图例
plt.show()
plant_fig()
# print(pre_train_data["polarity"][pre_train_data["star"] == 5])
绘制子图
import matplotlib.pyplot as plt
#创建新的figure
fig = plt.figure()
#必须通过add_subplot()创建一个或多个绘图
ax = fig.add_subplot(221)
#绘制2x2两行两列共四个图,编号从1开始
ax1 = fig.add_subplot(221)
ax2 = fig.add_subplot(222)
ax3 = fig.add_subplot(223)
ax4 = fig.add_subplot(224)
#图片的显示
plt.show()