|
|
|
@ -0,0 +1,529 @@
|
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
"""
|
|
|
|
|
3.1 基本语法
|
|
|
|
|
print(*objects, sep=' ', end='\n')
|
|
|
|
|
|
|
|
|
|
objects 复数,表示可以一次输出多个对象
|
|
|
|
|
输出多个对象时,需要用 ',' 分隔。
|
|
|
|
|
sep 用来间隔多个对象,默认值是一个空格。
|
|
|
|
|
end 用来设定以什么结尾,默认值是换行符 \n,我们可以换成其他字符串
|
|
|
|
|
|
|
|
|
|
modf(x):以元组的形式返回(小数部分,整数部分).
|
|
|
|
|
两部分的数值符号与x相同,整数部分以浮点型表示。
|
|
|
|
|
|
|
|
|
|
max(x1,x2,...):返回给定参数的最大值,参数可以为序列。
|
|
|
|
|
|
|
|
|
|
min(x1,x2,...):返回给定参数的最小值,参数可以为序列。
|
|
|
|
|
|
|
|
|
|
abs(x):返回整数的绝对值,如abs(-10)返回10。
|
|
|
|
|
|
|
|
|
|
fabs(x):返回浮点数的绝对值,如math.fabs(-10) 返回10.0。
|
|
|
|
|
|
|
|
|
|
ceil(x):返回数字的向上取整,如math.ceil(4.1)返回5。
|
|
|
|
|
|
|
|
|
|
floor(x):返回数字的向下取整,如math.floor(4.9)返回4。
|
|
|
|
|
|
|
|
|
|
round(x, n):返回浮点数x的四舍五入值,如给出n值,
|
|
|
|
|
则代表舍入到小数点后的位数
|
|
|
|
|
|
|
|
|
|
exp(x):返回e的x次幂,如math.exp(1)返回2.718281828459045。
|
|
|
|
|
|
|
|
|
|
log(x,base):如math.log(100,10)返回2.0。
|
|
|
|
|
|
|
|
|
|
log10(x):返回以10为基数的x的对数,如math.log10(100)返回2.0。
|
|
|
|
|
|
|
|
|
|
pow(x, y):x**y运算后的值
|
|
|
|
|
|
|
|
|
|
sqrt(x):返回数字x的平方根,返回类型为实数,
|
|
|
|
|
|
|
|
|
|
hypot(x, y):返回欧几里德范数sqrt(x**2+y**2)
|
|
|
|
|
|
|
|
|
|
acos(x):返回x的反余弦弧度值。
|
|
|
|
|
|
|
|
|
|
asin(x):返回x的反正弦弧度值。
|
|
|
|
|
|
|
|
|
|
atan(x):返回x的反正切弧度值。
|
|
|
|
|
|
|
|
|
|
atan2(y, x):返回给定的X及Y坐标值的反正切值。
|
|
|
|
|
|
|
|
|
|
cos(x):返回x的弧度的余弦值。
|
|
|
|
|
|
|
|
|
|
sin(x):返回x弧度的正弦值。
|
|
|
|
|
|
|
|
|
|
tan(x):返回x弧度的正切值。
|
|
|
|
|
|
|
|
|
|
degrees(x):将弧度转换为角度,
|
|
|
|
|
|
|
|
|
|
radians(x):将角度转换为弧度
|
|
|
|
|
|
|
|
|
|
pi——圆周率,一般以π来表示。
|
|
|
|
|
|
|
|
|
|
e——自然常数。
|
|
|
|
|
|
|
|
|
|
3.2 函数
|
|
|
|
|
1、位置参数:根据函数定义的位置来传递参数
|
|
|
|
|
|
|
|
|
|
x1, x2 = solve(3,4,5) #位置参数a=3,b=4,c=5
|
|
|
|
|
print('x1=%f, x2=%f' % (x1, x2))
|
|
|
|
|
|
|
|
|
|
2、默认参数:函数定义时为参数提供默认值,
|
|
|
|
|
调用时默认参数的值可传可不传,放在所有参数的后面
|
|
|
|
|
|
|
|
|
|
a, b, c = 1, 10, -1
|
|
|
|
|
x3, x4 = solve(a, b) #默认第三个参数为5,a,b为位置参数
|
|
|
|
|
print('x3=%f, x4=%f' % (x3, x4))
|
|
|
|
|
|
|
|
|
|
3、关键字参数:通过直接给形式参数赋值的方式
|
|
|
|
|
指示哪个参数需要传递什么值,可以脱离参数的顺序
|
|
|
|
|
|
|
|
|
|
x5, x6 = solve(b=20,c=10,a=2) #关键字参数
|
|
|
|
|
print('x5=%f, x6=%f' % (x5, x6))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lambda函数
|
|
|
|
|
用于定义简单的、能够在一行内表示的函数,返回一个函数值
|
|
|
|
|
<函数名>=lambda<参数列表>:<表达式>
|
|
|
|
|
例:f=lambda x,y:x+y
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
map()函数
|
|
|
|
|
map(function, iterable, ...)
|
|
|
|
|
function是一个函数,可以使用匿名函数,iterable是一个或多个序列
|
|
|
|
|
第一个参数function以参数序列中的每一个元素调用function函数
|
|
|
|
|
返回包含每次 function 函数返回值的新列表
|
|
|
|
|
例如:result = map(lambda x: x**2, [1, 3, 5, 7, 9])
|
|
|
|
|
print(list(result)) #结果为:[1,9,25,49,81]
|
|
|
|
|
注意:map函数返回的是一个迭代器,需要使用list函数转换为列表
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3.3 条件分支 没有
|
|
|
|
|
|
|
|
|
|
3.4 循环
|
|
|
|
|
while循环常和break一起使用,用于满足某一条件提前中止循环
|
|
|
|
|
while 条件表达式:
|
|
|
|
|
......
|
|
|
|
|
if 条件:
|
|
|
|
|
break
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3.5 字符串基本操作
|
|
|
|
|
反斜杠 \ 可以用来转义
|
|
|
|
|
字符串可以用' +' 进行连接(粘到一起),也可以用 '*' 进行重复
|
|
|
|
|
|
|
|
|
|
字符串是可以被索引 (下标访问)的,第一个字符索引是 0
|
|
|
|
|
索引也可以用负数,这种会从右边开始数
|
|
|
|
|
|
|
|
|
|
切片 可以获取子字符串
|
|
|
|
|
省略开始索引时默认为0,省略结束索引时默认为到字符串的结束
|
|
|
|
|
|
|
|
|
|
str[::-1] #倒叙索引
|
|
|
|
|
|
|
|
|
|
len() 返回一个字符串的长度
|
|
|
|
|
|
|
|
|
|
str.count(sub,start,end)
|
|
|
|
|
反回子字符串 sub 在 [start, end] 范围内非重叠出现的次数。
|
|
|
|
|
可选参数 start 与 end 会被解读为切片表示法
|
|
|
|
|
|
|
|
|
|
str.find(sub,start,end)
|
|
|
|
|
返回子字符串 sub 在 [start,end] 切片内被找到的最小索引。
|
|
|
|
|
可选参数 start 与 end 会被解读为切片表示法。
|
|
|
|
|
如果 sub 未被找到则返回 -1。
|
|
|
|
|
|
|
|
|
|
str.index(sub,start,end)
|
|
|
|
|
类似于 find(),但在找不到子类时会引发 ValueError。
|
|
|
|
|
|
|
|
|
|
str.format(*args, **kwargs)
|
|
|
|
|
>>> "The sum of 1 + 2 is {0}".format(1+2)
|
|
|
|
|
'The sum of 1 + 2 is 3'
|
|
|
|
|
|
|
|
|
|
str.lower()
|
|
|
|
|
返回原字符串的副本,其所有区分大小写的字符均转换为小写
|
|
|
|
|
|
|
|
|
|
str.upper()
|
|
|
|
|
返回原字符串的副本,其中所有区分大小写的字符均转换为大写
|
|
|
|
|
|
|
|
|
|
str.replace(old, new, count)
|
|
|
|
|
返回字符串的副本,其中出现的所有子字符串 old 都将被替换为 new
|
|
|
|
|
如果给出了可选参数 count,则只替换前 count 次出现。
|
|
|
|
|
|
|
|
|
|
str.split(sep=None, maxsplit=-1)
|
|
|
|
|
返回一个由字符串内单词组成的列表,用sep作为分隔字符串 默认空格
|
|
|
|
|
给出了 max,最多进行max次拆分(列表最多会有max+1个元素)
|
|
|
|
|
如max未指定或为-1,则不限制拆分次数(进行所有可能的拆分)
|
|
|
|
|
|
|
|
|
|
如给出了sep,则连续的分隔符不会被组合在一起而是被视为分隔空字符串
|
|
|
|
|
例如 '1,,2'.split(',') 将返回 ['1', '', '2']
|
|
|
|
|
sep可由多个字符组成 ('1<>2<>3'.split('<>')将返回
|
|
|
|
|
['1', '2', '3'])。
|
|
|
|
|
使用指定的分隔符拆分空字符串将返回 ['']
|
|
|
|
|
|
|
|
|
|
如果 sep 未指定或为 None,则会应用另一种拆分算法:
|
|
|
|
|
连续的空格会被视为单个分隔符,其结果将不包含开头或末尾的空字符串
|
|
|
|
|
如果字符串包含前缀或后缀空格的话。
|
|
|
|
|
因此,使用 None 拆分空字符串或仅包含空格的字符串将返回 []
|
|
|
|
|
|
|
|
|
|
str.strip()
|
|
|
|
|
返回原字符串的副本,移除其中的前导和末尾空格字符
|
|
|
|
|
|
|
|
|
|
tr.title() 返回原字符串的标题版本,
|
|
|
|
|
其中每个单词第一个字母为大写,其余字母为小写
|
|
|
|
|
|
|
|
|
|
str.isnumeric()
|
|
|
|
|
中至少有一个字符且所有字符均为数值字符则返回True否则返回False
|
|
|
|
|
|
|
|
|
|
str.islower()
|
|
|
|
|
至少有一个区分大小写的字符且此类字符均为小写返回T否则返回F
|
|
|
|
|
|
|
|
|
|
str.isalpha()
|
|
|
|
|
所有字符都是字母并且至少有一个字符返回 True否则返回 False
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4.1 列表
|
|
|
|
|
list.append(x)
|
|
|
|
|
在列表的末尾添加一个元素。相当于 a[len(a):] = [x]
|
|
|
|
|
|
|
|
|
|
list.extend(iterable)
|
|
|
|
|
使用可迭代对象中的所有元素来扩展列表。
|
|
|
|
|
相当于 a[len(a):] = iterable
|
|
|
|
|
|
|
|
|
|
list.insert(i, x)
|
|
|
|
|
在给定的位置插入一个元素。第一个参数是要插入的元素的索引,
|
|
|
|
|
所以 a.insert(0, x) 插入列表头部,
|
|
|
|
|
a.insert(len(a), x) 等同于 a.append(x)
|
|
|
|
|
|
|
|
|
|
list.remove(x)
|
|
|
|
|
移除列表中第一个值为 x 的元素。
|
|
|
|
|
如果没有这样的元素,则抛出 ValueError 异常
|
|
|
|
|
|
|
|
|
|
list.pop(i)
|
|
|
|
|
删除列表中给定位置的元素并返回它。
|
|
|
|
|
如果没有给定位置,a.pop() 将会删除并返回列表中的最后一个元素
|
|
|
|
|
|
|
|
|
|
list.clear()
|
|
|
|
|
删除列表中所有的元素
|
|
|
|
|
|
|
|
|
|
list.index(x, start, end)
|
|
|
|
|
返回列表中第一个值为 x 的元素的从零开始的索引。
|
|
|
|
|
如果没有这样的元素将会抛出 ValueError 异常
|
|
|
|
|
|
|
|
|
|
start和 end 是切片符号,用于将搜索限制为列表的特定子序列。
|
|
|
|
|
返回的索引是相对于整个序列的开始计算的,而不是 start 参数
|
|
|
|
|
|
|
|
|
|
list.count(x)
|
|
|
|
|
返回元素 x 在列表中出现的次数
|
|
|
|
|
|
|
|
|
|
list.sort(key=None, reverse=False)
|
|
|
|
|
对列表中的元素进行排序
|
|
|
|
|
|
|
|
|
|
list.reverse()
|
|
|
|
|
反转列表中的元素
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4.2 字典
|
|
|
|
|
|
|
|
|
|
删除键值对 del cars['JLR']
|
|
|
|
|
|
|
|
|
|
fromkeys() 函数用于创建一个新字典,
|
|
|
|
|
以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值:
|
|
|
|
|
dict.fromkeys(seq, value)
|
|
|
|
|
|
|
|
|
|
seq -- 字典键值列表。
|
|
|
|
|
value -- 可选参数, 设置键序列(seq)的值
|
|
|
|
|
|
|
|
|
|
遍历字典中的键:
|
|
|
|
|
for key in cars.keys():
|
|
|
|
|
print(key)
|
|
|
|
|
|
|
|
|
|
遍历字典中的值:
|
|
|
|
|
for value in cars.values():
|
|
|
|
|
print(value)
|
|
|
|
|
|
|
|
|
|
遍历字典中的键值对:
|
|
|
|
|
for key,value in cars.items():
|
|
|
|
|
print(key,value)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
文件操作
|
|
|
|
|
open 方法的语法格式为:
|
|
|
|
|
open(file,mode='r',encoding=None)
|
|
|
|
|
|
|
|
|
|
file:表示要打开的文件路径(相对或者绝对路径);
|
|
|
|
|
mode:表示文件打开模式;
|
|
|
|
|
encoding:用于设置编码格式,一般使用 utf8;
|
|
|
|
|
|
|
|
|
|
读文本文件
|
|
|
|
|
read()将文本文件所有行读到一个字符串中。
|
|
|
|
|
readline()是一行一行的读,通常在迭代中使用
|
|
|
|
|
readlines()是将文本文件中所有行读到一个list中,
|
|
|
|
|
文本文件每一行是list的一个元素
|
|
|
|
|
|
|
|
|
|
文件使用完毕后要进行关闭:
|
|
|
|
|
f.close()
|
|
|
|
|
|
|
|
|
|
文件指针复位,重新回到初始状态
|
|
|
|
|
f.seek(0)
|
|
|
|
|
|
|
|
|
|
写文本文件
|
|
|
|
|
write()与read()、readline()方法对应,是将字符串写入到文件中
|
|
|
|
|
writelines()方法和readlines()方法对应,也是针对列表的操作
|
|
|
|
|
它接收一个字符串列表作为参数,将他们写入到文件中,
|
|
|
|
|
换行符不会自动的加入,因此,需要显式的加入换行符
|
|
|
|
|
|
|
|
|
|
写入二进制文件时,只能写入 bytes 类型的数据
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
数据分析
|
|
|
|
|
文件读写
|
|
|
|
|
1.读取文件
|
|
|
|
|
利用pandas读取文件主要用到的函数是read_xx(),
|
|
|
|
|
读取后数据结构为dataframe。
|
|
|
|
|
|
|
|
|
|
1.1 excel文件
|
|
|
|
|
pd.read_excel()可以用来读取excel文件,主要涉及到的参数有:
|
|
|
|
|
(1)sheet_name: excel文件中的表名
|
|
|
|
|
(2)index_col: 使用哪一列作为行索引,默认从0开始
|
|
|
|
|
(5)header: 哪一行设置为列索引,默认是第一行,即header = 0
|
|
|
|
|
(8)names: 列索引
|
|
|
|
|
(10)encoding: 默认是utf-8,还可以是gbk
|
|
|
|
|
(12)nrows: 读取多少行数据
|
|
|
|
|
|
|
|
|
|
默认将第一行作为表头读出。
|
|
|
|
|
如果数据表格无表头,设置参数header=None
|
|
|
|
|
|
|
|
|
|
1.2 csv文件
|
|
|
|
|
csv文件是以逗号为分隔符的文件,读取参数与excel基本类似。
|
|
|
|
|
但是读取csv文件通常需要指定解码方式,
|
|
|
|
|
最常用的是utf-8,如果使用utf-8报错,尝试设为gbk
|
|
|
|
|
|
|
|
|
|
txt文件
|
|
|
|
|
txt文件是以指制表符\t为分隔符的文件,可用read_csv来读取,
|
|
|
|
|
参数与excel、csv基本类似,不同的地方在于必须要指定sep。
|
|
|
|
|
|
|
|
|
|
df =pd.read_table('example.txt',encoding = 'gbk',sep = ',')
|
|
|
|
|
|
|
|
|
|
2.1写入文件
|
|
|
|
|
excel,csv,txt写入文件的方式基本类似,
|
|
|
|
|
以pandas的to_xx()方式写入,三者类似,这里只用excel格式来示例
|
|
|
|
|
(1)index: 是否保留行索引
|
|
|
|
|
(2)columns: 通过列索引指定所需列
|
|
|
|
|
(3)sheet_name: 表名
|
|
|
|
|
(4)encoding:编码格式,utf-8或者gbk
|
|
|
|
|
(5)na_rep: 缺失值填充
|
|
|
|
|
(6)inf_rep:无穷值填充
|
|
|
|
|
(7)index_label: 行索引标签
|
|
|
|
|
(8)header: 默认为True,False没有列索引,
|
|
|
|
|
如需更改列名,则header = ["列1","列2","列3"]
|
|
|
|
|
|
|
|
|
|
df = pd.read_excel('example.xls',nrows = 5)
|
|
|
|
|
df.to_excel('example_new.xlsx',index = False,
|
|
|
|
|
encoding = "utf-8")
|
|
|
|
|
|
|
|
|
|
写入csv文件和文本文件时用to_csv()。
|
|
|
|
|
可以通过设置sep参数来指定间隔符,默认为','
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.按列索引
|
|
|
|
|
df['性别'] or df.性别 #访问某一列数据
|
|
|
|
|
df[['性别','消费金额']] #访问不连续的多列数据
|
|
|
|
|
df['性别':'消费金额'] #访问连续的多列数据
|
|
|
|
|
|
|
|
|
|
2.按行索引
|
|
|
|
|
df.iloc[0:3]
|
|
|
|
|
|
|
|
|
|
3.按行、列索引
|
|
|
|
|
df.loc[1:3,'性别':'消费金额']
|
|
|
|
|
df.iloc[[1,3],[1,3]]
|
|
|
|
|
|
|
|
|
|
4.布尔索引
|
|
|
|
|
df[df['消费金额']>=300] #消费金额>300的行
|
|
|
|
|
|
|
|
|
|
添加新列
|
|
|
|
|
df['职业']='教师' #增加职业列,将所有人的职业设为教师
|
|
|
|
|
df[df['性别']=='男']['职业']='医生' #将男性的职业改为医生
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
将数据框架df按特定列排序:
|
|
|
|
|
df.sort_values(by='##',axis=0,ascending=True,
|
|
|
|
|
inplace=False, na_position='last')
|
|
|
|
|
|
|
|
|
|
by:指定列名(axis=0或’index’)或索引值(axis=1或’columns’)
|
|
|
|
|
axis:若axis=0或’index’,则按照指定列中数据大小排序;
|
|
|
|
|
若axis=1或’columns’,则按照指定索引中数据大小排序,默认axis=0
|
|
|
|
|
ascending:是否按指定列的数组升序排列,默认为True,即升序排列
|
|
|
|
|
inplace:是否用排序后的数据集替换原来的数据,默认为False即不替换
|
|
|
|
|
na_position:{‘first’,‘last’},设定缺失值的显示位置
|
|
|
|
|
|
|
|
|
|
统计
|
|
|
|
|
sum() 求和 diff() 差分
|
|
|
|
|
max() 最大值 min() 最小值
|
|
|
|
|
var() 方差 std() 标准差
|
|
|
|
|
median() 中位数 mean() 均值
|
|
|
|
|
describe()计算各列的频率、均值、标准差、级值、四分位数
|
|
|
|
|
|
|
|
|
|
分组统计
|
|
|
|
|
DataFrame.groupby(by=None,
|
|
|
|
|
axis=0,as_index=True, sort=True)
|
|
|
|
|
|
|
|
|
|
by:分组字段,可以是列名/series/字典/函数,常用为列名
|
|
|
|
|
axis:指定切分方向,默认为0,表示沿着行切分
|
|
|
|
|
as_index:是否将分组列名作为输出的索引,默认为True;
|
|
|
|
|
当设置为False时相当于加了reset_index功能
|
|
|
|
|
sort:与SQL中groupby操作会默认执行排序一致,
|
|
|
|
|
该groupby也可通过sort参数指定是否对输出结果按索引排序
|
|
|
|
|
|
|
|
|
|
m=df.groupby('性别').size() #统计男女人数
|
|
|
|
|
n=df.groupby('性别')['消费金额'].mean() #统计男女消费金额均值
|
|
|
|
|
|
|
|
|
|
可视化
|
|
|
|
|
|
|
|
|
|
import matplotlib.pyplot as plt
|
|
|
|
|
|
|
|
|
|
1.折线图
|
|
|
|
|
x=df['年龄'].index
|
|
|
|
|
y=df['年龄'].values
|
|
|
|
|
plt.plot(x, y) # plot函数作图
|
|
|
|
|
plt.xticks(x,[0,1,2,3,4,5]) #设置x轴刻度值
|
|
|
|
|
plt.savefig('line.png', dpi=120) #保存
|
|
|
|
|
plt.show() #看得到图形则不用这条语句
|
|
|
|
|
|
|
|
|
|
2.条图
|
|
|
|
|
n=df.groupby('贷款与否')['消费金额'].sum()
|
|
|
|
|
plt.bar(n.index, n.values) # bar函数作图
|
|
|
|
|
plt.xticks(n.index,['未贷款','贷款']) #设置x轴刻度值
|
|
|
|
|
plt.savefig('bar.png', dpi=120) #保存
|
|
|
|
|
plt.show() #看得到图形则不用这条语句
|
|
|
|
|
|
|
|
|
|
3.饼图
|
|
|
|
|
labels = ['女','男']
|
|
|
|
|
sizes = m.values
|
|
|
|
|
explode = (0,0.1)
|
|
|
|
|
plt.pie(sizes,explode=explode,labels=labels,
|
|
|
|
|
autopct='%1.1f%%',shadow=False,startangle=150)
|
|
|
|
|
plt.title("男女比例")
|
|
|
|
|
plt.show()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
数值预测
|
|
|
|
|
创建数组
|
|
|
|
|
np.random.randint(low, high=None, size=None, dtype='l')
|
|
|
|
|
生成一个整数或N维整数数组,取数范围:
|
|
|
|
|
若high不为None时,取[low,high)之间随机整数,
|
|
|
|
|
否则取值[0,low)之间随机整数。
|
|
|
|
|
|
|
|
|
|
#生成包含10个元素的值在[0,100) 的数组
|
|
|
|
|
np.random.randint(0, 100, 10)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
改变维度 reshape函数可以改变数组的维度
|
|
|
|
|
import numpy as np
|
|
|
|
|
arr1 = np.array([1,2,3,4,5,6]) #6个元素的一维数组
|
|
|
|
|
arr1 = arr1.reshape(2,3) #改变为:2行3列的二维数组
|
|
|
|
|
|
|
|
|
|
布尔索引 可以通过一个布尔数组来索引目标数组,
|
|
|
|
|
以此找出与布尔数组中值为True的对应的目标数组中的数据
|
|
|
|
|
需要注意的是,布尔数组的长度必须与目标数组对应的轴的长度一致
|
|
|
|
|
arr2d = np.array([[1, -2, 3], [-4, 5, 6]])
|
|
|
|
|
print(arr2d<0) #arr2d<0 是个布尔型数组
|
|
|
|
|
print(arr2d[arr2d<0]) #用布尔型数组来索引
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
基本运算 形状相同的数组之间、数组与标量之间都可以进行算数运算,
|
|
|
|
|
这些运算会传播到数组中的每一个元素,
|
|
|
|
|
这种传播到元素的运算方式被称为广播运算。
|
|
|
|
|
arr2d=arr2d*2 #数组每个元素都乘以2
|
|
|
|
|
|
|
|
|
|
在m行n列矩阵应用max、min、sum、mean等函数时,
|
|
|
|
|
如果参数axis为0(第0轴)以矩阵的每列为单位进行运算,结果是向量
|
|
|
|
|
参数axis为1(第1轴)时,指定以每行为单位进行运算,结果也是向量
|
|
|
|
|
如果不指定axis参数,则对矩阵的所有参数进行计算,结果是个标量。
|
|
|
|
|
|
|
|
|
|
np.sum(arr2d,axis=0)
|
|
|
|
|
[-6, 6, 18]
|
|
|
|
|
|
|
|
|
|
numpy文件操作
|
|
|
|
|
|
|
|
|
|
读写txt文件
|
|
|
|
|
a = list(range(0, 100))
|
|
|
|
|
a = np.array(a) # a.dtype = np.int64
|
|
|
|
|
np.savetxt("filename.txt", a)
|
|
|
|
|
b = np.loadtxt("filename.txt") # b.dtype = np.float64
|
|
|
|
|
|
|
|
|
|
散点图
|
|
|
|
|
matplotlib.pyplot.scatter(x, y,c=None,marker=None)
|
|
|
|
|
|
|
|
|
|
x,y:表示的是大小为(n)的数组,也就是我们即将绘制散点图的数据点
|
|
|
|
|
c:表示颜色,默认蓝色'b',表示标记的颜色。
|
|
|
|
|
可以是一个表示颜色的字符,或者是一个长度为n的表示颜色的序列
|
|
|
|
|
marker:表示的是标记的样式,默认的是'o'。
|
|
|
|
|
|
|
|
|
|
import numpy as np
|
|
|
|
|
import matplotlib.pyplot as plt
|
|
|
|
|
np.random.seed(1)
|
|
|
|
|
x=np.random.rand(10)
|
|
|
|
|
y=np.random.rand(10)
|
|
|
|
|
plt.scatter(x,y,c='orange')
|
|
|
|
|
plt.show()
|
|
|
|
|
|
|
|
|
|
折线图
|
|
|
|
|
plt.plot(x, y, format_string, **kwargs)
|
|
|
|
|
|
|
|
|
|
x:X轴数据,列表或数组,可选
|
|
|
|
|
y:Y轴数据,列表或数组
|
|
|
|
|
format_string:控制曲线的格式字符串,可选
|
|
|
|
|
**kwargs:第二组或更多(x,y,format_string),可画多条曲线
|
|
|
|
|
|
|
|
|
|
示例如下:
|
|
|
|
|
import matplotlib.pyplot as plt
|
|
|
|
|
import numpy as np
|
|
|
|
|
a = np.arange(10)
|
|
|
|
|
plt.plot(a,a*1.5,a,a*2.5)
|
|
|
|
|
plt.show()
|
|
|
|
|
|
|
|
|
|
数据分类
|
|
|
|
|
归一化
|
|
|
|
|
|
|
|
|
|
标准化
|
|
|
|
|
|
|
|
|
|
第四章-算法思维-4.3.1方程求根(多种方法求根)
|
|
|
|
|
暴力搜根的思路如下:
|
|
|
|
|
从给定的根初值x和步长值h开始,往右逐步寻找,x=x+h:
|
|
|
|
|
如果|f(x)|<err,则找到近似根,搜根成功,结束计算;
|
|
|
|
|
如函数值大于0,但不满足精度要求则搜根失败,提前结束计算以提高效率
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
二分法求方程的根
|
|
|
|
|
获得根初始区间[a,b],保证f(a)*f(b)<0
|
|
|
|
|
计算中点x,及中间f(x)
|
|
|
|
|
当|f(x)|>=err时: 如果f(x)与f(a)的符号相同,则解在[中,右],
|
|
|
|
|
否则解在[左,中]。相应改变区间。
|
|
|
|
|
重新计算中点x,及f(x)
|
|
|
|
|
回到第3步
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
用牛顿迭代法求方程的近似根
|
|
|
|
|
画图得到根的初始值x
|
|
|
|
|
求出函数的导数,计算f(x), df(x)
|
|
|
|
|
当|f(x)|>=err时,重复: x=x−f(x)/df(x)
|
|
|
|
|
重新计算f(x),df(x)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
牛顿割线法解题流程
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
第四章-算法思维-4.3.2函数求最值(梯度下降法)
|
|
|
|
|
一元函数的梯度下降法公式
|
|
|
|
|
x(k+1) =xk −η∗df(xk)
|
|
|
|
|
|
|
|
|
|
二元函数梯度下降法迭代公式
|
|
|
|
|
(xk+1,yk+1)=(xk,yk)-η*(df/dx,df/dx)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
数据拟合(梯度下降法)
|
|
|
|
|
数据的线性拟合
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|