0%

概述

本文讲述使用rclone下挂载OD和GD。

1.挂载OD

2.挂载GD

挂载

rclone mount onedrive-guke:/ /home/one-guke --copy-links --n
o-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000

开机自动挂载

  • 下载并编辑自启脚本
wget -N git.io/rcloned && nano rcloned
  • 修改内容:
NAME="Onedrive" #Rclone配置时填写的name
REMOTE=''  #远程文件夹,网盘里的挂载的一个文件夹,留空为整个网盘
LOCAL='/Onedrive'  #挂载地址,VPS本地挂载目录
  • 设置开机自启
mv rcloned /etc/init.d/rcloned
chmod +x /etc/init.d/rcloned
update-rc.d -f rcloned defaults # Debian/Ubuntu
chkconfig rcloned on # CentOS
bash /etc/init.d/rcloned start

看到 [信息] rclone 启动成功 ! 即可。

管理

开始挂载 bash /etc/init.d/rcloned start

停止挂载 bash /etc/init.d/rcloned stop

重新挂载 bash /etc/init.d/rcloned restart

查看日志 tail -f /$HOME/.rclone/rcloned.log

卸载自启挂载

bash /etc/init.d/rcloned stop
update-rc.d -f rcloned remove # Debian/Ubuntu
chkconfig rcloned off # CentOS
rm -f /etc/init.d/rcloned

5.常用Rclone命令

### 文件上传
rclone copy /home/backup gdrive:backup  # 本地路径 配置名字:网盘文件夹路径
### 文件下载
rclone copy gdrive:backup /home/backup  # 配置名字:网盘文件夹路径 本地路径
### 新建文件夹
rclone mkdir gdrive:backup              # 配置名字:网盘文件夹路径
### 获取文件夹大小
rclone size gdrive:backup               # 配置名字:网盘文件夹路径

### 列表
rclone ls gdrive:backup
rclone lsl gdrive:backup # 比上面多一个显示上传时间
rclone lsd gdrive:backup # 只显示文件夹
### 挂载
rclone mount gdrive:mm /root/mm &
### 卸载
fusermount -u  /root/mm

#### 其他 ####
#### https://softlns.github.io/2016/11/28/rclone-guide/
rclone config - 以控制会话的形式添加rclone的配置,配置保存在.rclone.conf文件中。
rclone copy - 将文件从源复制到目的地址,跳过已复制完成的。
rclone sync - 将源数据同步到目的地址,只更新目的地址的数据。   –dry-run标志来检查要复制、删除的数据
rclone move - 将源数据移动到目的地址。
rclone delete - 删除指定路径下的文件内容。
rclone purge - 清空指定路径下所有文件数据。
rclone mkdir - 创建一个新目录。
rclone rmdir - 删除空目录。
rclone check - 检查源和目的地址数据是否匹配。
rclone ls - 列出指定路径下所有的文件以及文件大小和路径。
rclone lsd - 列出指定路径下所有的目录/容器/桶。
rclone lsl - 列出指定路径下所有文件以及修改时间、文件大小和路径。
rclone md5sum - 为指定路径下的所有文件产生一个md5sum文件。
rclone sha1sum - 为指定路径下的所有文件产生一个sha1sum文件。
rclone size - 获取指定路径下,文件内容的总大小。.
rclone version - 查看当前版本。
rclone cleanup - 清空remote。
rclone dedupe - 交互式查找重复文件,进行删除/重命名操作。
重启:systemctl restart rclone
停止:systemctl stop rclone
状态:systemctl status rclone
参考链接:

https://sunpma.com/659.html

https://p3terx.com/archives/linux-vps-uses-rclone-to-mount-network-drives-such-as-onedrive-and-google-drive.html

缺失值处理

1.删除法:适用于缺失值占比少的

2.插补法

①用众数,平均值和中值,视函数图像而定

②回归法

③极大似然估计:

(1)根据总体的分布,建立似然函数 img

(2) 当 L 关于 img可微时,(由微积分求极值的原理)可由方程组img定出img,称以上方程组为似然方程.因为 L 与 img有相同的极大值点,所以img也可由方程组img定出 img,称以上方程组为对数似然方程;img就是所求参数img的极大似然估计量。当总体是离散型的,将上面的概率密度函数img,换成它的分布律img

这样看起来似乎有些抽象,那可以看看下面那个例子。通俗理解请点击这里

img

可以看到,这里的p就是参数,而这个似然函数其实是概率函数,如果求导便会发现P(H,T,p)是随着p的增大而增大。

在一般情况下,计算参数可以用期望最大值来计算。

import math
w = 2.0/3  #最大概率
h = 49  #正面次数
t = 31  #反面次数  

数据变换

将不同的数据转换成同一个标准和规格是十分重要的

标准化

离差标准化:

img

缺陷:当有新数据加入时,可能导致max和min的变化,需要重新定义

z-score 标准化(zero-meannormalization)

而并非所有数据标准化的结果都映射到[0,1]区间上,其中最常见的标准化方法就是Z标准化;也是SPSS中最为常用的标准化方法,也叫标准差标准化,变成均值为0,方差为1img

  • *z-score标准化方法适用于属性A的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。*
  • spss默认的标准化方法就是z-score标准化。
  • 用Excel进行z-score标准化的方法:在Excel中没有现成的函数,需要自己分步计算,其实标准化的公式很简单。

步骤如下:
1.求出各变量(指标)的算术平均值(数学期望)xi和标准差si ;
2.进行标准化处理:
zij=(xij-xi)/si
其中:zij为标准化后的变量值;xij为实际变量值。
3.将逆指标前的正负号对调。
标准化后的变量值围绕0上下波动,大于0说明高于平均水平,小于0说明低于平均水平。

归一化方法

img

离散化

将连续的数据分成若干段。

语义转换

用整数数据来替换字符串的数据

数据统计

在matlab中,标准差:std(x) 方差:var(x) 极差:range(x)

偏度统计数据分布偏斜方向和程度的度量,$v_i$>0为右偏态,$v_i$<0是左偏态

定义:

其中img 分别表示二阶和三阶中心矩img

峰度:衡量偏离正态分布的尺度,正态分布的峰度为3,若比3大,这说明有沉重的尾巴

在matlab中,偏度:skewness(x) 峰度:kurtosis(x)

分布统计

分布函数:随机变量最重要的概率特征,分布函数可以完整地描述随机变量的统计规律,并且决定随机变量的一切其他概率特征。

设X为连续型随机变量,其密度函数为img,则有img

数据可视化

参考链接:

https://www.jianshu.com/p/fa73a07cd750

百度百科

概述

因为一时兴起把手机和电脑都修改了字体,所以现在想把博客的字体也修改一下。

1.

开始寻找字体的CSS文件,在hexo-theme-matery\source\css\matery.css里可以修改字体的大小,能看懂英文的大致就能知道自己修改的是哪里的字体了

font-size: 3rem;

在160行左右,会看到

font-family: Inconsolata, Monaco, Consolas, 'Courier New', Courier, monospace;

这些是修改代码字体的

2.

我们可以看出来第一个字体变量是题目的字体,第二个是其余部分的字体。
因为我们是中文博客,所以肯定希望能改成一些比较漂亮的中文字体,但是显而易见,你改成宋体是不合理的,因为第一会出现乱码情况,第二Hexo也不接受中文名字的字体。所以我们需要使用中文字体的英文名称。下面是中文字体对应的英文名称。

新细明体:PMingLiU 
细明体:MingLiU 
标楷体:DFKai-SB 
黑体:SimHei 
宋体:SimSun 
新宋体:NSimSun 
仿宋:FangSong 
楷体:KaiTi 
仿宋_GB2312:FangSong_GB2312 
楷体_GB2312:KaiTi_GB2312 
微软正黑体:Microsoft JhengHei 
微软雅黑体:Microsoft YaHei 

装Office会多出来的一些字体: 
隶书:LiSu 
幼圆:YouYuan 
华文细黑:STXihei 
华文楷体:STKaiti 
华文宋体:STSong 
华文中宋:STZhongsong 
华文仿宋:STFangsong 
方正舒体:FZShuTi 
方正姚体:FZYaoti 
华文彩云:STCaiyun 
华文琥珀:STHupo 
华文隶书:STLiti 
华文行楷:STXingkai 
华文新魏:STXinwei 

苹果电脑中的字体: 
华文细黑:STHeiti Light [STXihei] 
华文黑体:STHeiti 
华文楷体:STKaiti 
华文宋体:STSong 
华文仿宋:STFangsong 
丽黑 Pro:LiHei Pro Medium 
丽宋 Pro:LiSong Pro Light 
标楷体:BiauKai 
苹果丽中黑:Apple LiGothic Medium 
苹果丽细宋:Apple LiSung Light 

我们只要将自己喜欢字体的英文名加到这两个变量的第一个前面就可以了,有多个字体是为了预防在某些场合前面的字体出现异常,后面的字体可以替代一下。下面是我的定义。

参考链接:

  • 概述

因为感觉自己学东西太没头没脑了,很多东西学到一半,或者还没学透就学另一个的东西了,于是就做了一个2020年度学习计划,希望自己可以把这些知识全部学完并好好掌握吧!!加油!

1.任务列表及目录

[TOC]

  • [ ] 数学模型
  • [ ] matlab
  • [ ] python入门
  • [ ] python爬虫
  • [ ] python数据分析

2.思维导图

这个是用MindMaster画的,结果画到一半告诉我免费版主题不能超过100个,我哭了:sob:!!只好分开来了。。。)下面有分开后完整版的

2020年度学习计划思维导图

3.python

入门

python入门

爬虫

python爬虫

数据分析

python数据分析

4.数学建模

数学建模

5.一些库的介绍

数据获取

Selenium

Selenium是一个Web测试自动化框架,最初是为软件测试人员创建的。它提供了Web驱动程序API,供浏览器与用户操作交互并返回响应。它运行时会直接实例化出一个浏览器,完全模拟用户的操作,比如点击链接、输入表单,点击按钮提交等。所以我们使用它可以很方便的来登录网站和爬取数据。

可以使用 brew install selenium 的方式来快速安装selenium。

Scrapy

Scrapy是Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。其吸引人的地方在于任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。我们可以启用选择器(例如XPath,CSS)从网页中提取数据。

我们需要先安装Twisted,因为直接安装scrapy的话,安装会失败。所以使用 pip install Twisted-18.9.0-cp37-cp37m-win32.whl 来安装,然后使用pip install scrapy 来安装scrapy就可以了

Beautiful Soup

Beautiful Soup也是一个从网站爬取数据的库,他提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。

可以使用 brew install beautifulsoup4 的方式来快速安装bf4。

数据清洗

Spacy

spacy可以用于进行分词,命名实体识别,词性识别等等,最核心的数据结构是Doc和Vocab。Doc对象包含Token的序列和Token的注释,Vocab对象是spaCy使用的词汇表,用于存储语言中共享的数据,spaCy通过集中存储字符串,单词向量和词汇属性等,避免存储数据的多个副本。

NumPy

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。对数组执行数学运算和逻辑运算时,NumPy 是非常有用的。在用 Python 对 n 维数组和矩阵进行运算时,NumPy 提供了大量有用特征。

Pandas

pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。

数据可视化

Matplotlib

matplotlib是受MATLAB的启发构建的。MATLAB是数据绘图领域广泛使用的语言和工具。MATLAB语言是面向过程的。利用函数的调用,MATLAB中可以轻松的利用一行命令来绘制,然后再用一系列的函数调整结果。它有一套完全仿照MATLAB的函数形式的绘图接口,在matplotlib.pyplot模块中。这套函数接口方便MATLAB用户过度到matplotlib。

Pyecharts

Echarts 是一个由百度开源的数据可视化工具,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可,当 Python 遇到了 Echarts,就变成了 PyEcharts,目的就是为了与 Python 进行对接,方便在 Python 中直接使用数据生成图。

数据建模

Scikit-learn

scikit-learn包含众多顶级机器学习算法,主要有六大基本功能,分别是分类、回归、聚类、数据降维、模型选择和数据预处理。scikit-learn拥有非常活跃的用户社区,基本上其所有的功能都有非常详尽的文档供用户查阅。可以研读scikit-learn的用户指南及文档,对其算法的使用有更充分的了解。

Pytorch

PyTorch是美国互联网巨头Facebook在深度学习框架Torch的基础上使用Python重写的一个全新的深度学习框架,它更像NumPy的替代产物,不仅继承了NumPy的众多优点,还支持GPUs计算,在计算效率上要比NumPy有更明显的优势;不仅如此,PyTorch还有许多高级功能,比如拥有丰富的API,可以快速完成深度神经网络模型的搭建和训练。

Tensorflow

TensorFlow是一个采用数据流图(data flow graphs),用于数值计算、机器学习、神经网络的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。

模型检查

Lime

LIME能够解释所有我们可以获得预测概率的模型(在R中,也就是每一个与预测(type=“prob”)一起工作的模型)。它利用了这样一个事实,即线性模型很容易解释,因为它们基于特征和类标签之间的线性关系:将复模型函数用局部拟合线性模型逼近原训练集的排列。

音频数据处理

Librosa

librosa是一个非常强大的python语音信号处理的第三方库,用于音频、音乐分析、处理和些常见的时频处理、特征提取、绘制声音图形等功能应有尽有,功能十分强大。学会librosa后再也不用用python去实现那些复杂的算法了,只需要一句语句就能轻松实现。

图像数据处理

OpenCV

OpenCV是计算机视觉领域应用最广泛的开源工具包,基于C/C++,支持Linux/Windows/MacOS/Android/iOS,并提供了Python,Matlab和Java等语言的接口,因为其丰富的接口,优秀的性能和商业友好的使用许可,不管是学术界还是业界中都非常受欢迎。

可以在 anaconda 中来安装OpenCV

Scikit-imag

scikit-image 是一种开源的用于图像处理的 Python 包。它包括分割,几何变换,色彩操作,分析,过滤等算法。它用作集成到python运算环境结合一些科学运算库(Numpy,Scipy)

安装sudo apt-get install python-skimage

源码 git clone https://github.com/scikit-image/scikit-image.git

数据库相关

Pymongo

MongoDB是由C++语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储形式类似JSON对象,它的字段值可以包含其他文档、数组及文档数组,非常灵活。而要使用python进行操作就需要pymongo。

安装pip3 install pymongo

连接client = pymongo.MongoClient(host=’localhost’, port=’ip’)

PyMySQL

简单使用方法可以看看我的这一篇文章

数据分析结果可视化部署

Flask

Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。另外,Flask还有很强的定制性,用户可以根据自己的需求来添加相应的功能,在保持核心功能简单的同时实现功能的丰富与扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站。

Django

Django是高水准的Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架,它起源于开源社区。使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。另外,在Django框架中,还包含许多功能强大的第三方插件,使得Django具有较强的可扩展性。

安装pip3 install Django

文档

参考链接:

https://mp.weixin.qq.com/s/k-ssScAHMVQ714VRnnzI2A

概述

这次来学习一下比较简单的灰度预测吧,学习数学建模的道路还真是挺艰难的

20200306222058

1.

clear
syms a b;
c=[a b]';
A=[89677,99215,109655,120333,135823,159878,182321,209407,246619,300670];
B=cumsum(A);  % 原始数据累加
n=length(A);
for i=1:(n-1)
    C(i)=(B(i)+B(i+1))/2;  % 生成累加矩阵
end
% 计算待定参数的值
D=A;D(1)=[];
D=D';
E=[-C;ones(1,n-1)];
c=inv(E*E')*E*D;
c=c';
a=c(1);b=c(2);
% 预测后续数据
F=[];F(1)=A(1);
for i=2:(n+10)
    F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a;
end
G=[];G(1)=A(1);
for i=2:(n+10)
    G(i)=F(i)-F(i-1); %得到预测出来的数据
end 
t1=1999:2008;
t2=1999:2018;
G
plot(t1,A,'ko', 'LineWidth',2)
hold on
plot(t2,G,'k', 'LineWidth',2)
xlabel('年份', 'fontsize',12)
ylabel('利润/(元/年)','fontsize',12)
set(gca,  'LineWidth',2);

2.

%建立符号变量a(发展系数)和b(灰作用量)
syms a b;
c = [a b]';

%原始数列 A
A = [174, 179, 183, 189, 207, 234, 220.5, 256, 270, 285];
n = length(A);

%对原始数列 A 做累加得到数列 B
B = cumsum(A);

%对数列 B 做紧邻均值生成
for i = 2:n
    C(i) = (B(i) + B(i - 1))/2; 
end
C(1) = [];

%构造数据矩阵 
B = [-C;ones(1,n-1)];
Y = A; Y(1) = []; Y = Y';

%使用最小二乘法计算参数 a(发展系数)和b(灰作用量)
c = inv(B*B')*B*Y;
c = c';
a = c(1); b = c(2);

%预测后续数据
F = []; F(1) = A(1);
for i = 2:(n+10)
    F(i) = (A(1)-b/a)/exp(a*(i-1))+ b/a;
end

%对数列 F 累减还原,得到预测出的数据
G = []; G(1) = A(1);
for i = 2:(n+10)
    G(i) = F(i) - F(i-1); %得到预测出来的数据
end

disp('预测数据为:');
G

%模型检验

H = G(1:10);
%计算残差序列
epsilon = A - H;

%法一:相对残差Q检验
%计算相对误差序列
delta = abs(epsilon./A);
%计算相对误差Q
disp('相对残差Q检验:')
Q = mean(delta)

%法二:方差比C检验
disp('方差比C检验:')
C = std(epsilon, 1)/std(A, 1)

%法三:小误差概率P检验
S1 = std(A, 1);
tmp = find(abs(epsilon - mean(epsilon))< 0.6745 * S1);
disp('小误差概率P检验:')
P = length(tmp)/n

%绘制曲线图
t1 = 1995:2004;
t2 = 1995:2014;

plot(t1, A,'ro'); hold on;
plot(t2, G, 'g-');
xlabel('年份'); ylabel('污水量/亿吨');
legend('实际污水排放量','预测污水排放量');
title('长江污水排放量增长曲线');
grid on;

3.

x0 = [71.1 72.4 72.4 72.1 71.4 72 71.6]'; %这里是列向量,相当于原始数据中因变量
n = length(x0);
lamda = x0(1:n-1)./x0(2:n) %计算级比
range = minmax(lamda') %计算级比的范围
x1 = cumsum(x0)
B = [-0.5*(x1(1:n-1)+x1(2:n)),ones(n-1,1)]; %这是构造的数据矩阵B
Y = x0(2:n); %数据向量Y
u = B\Y  %拟合参数u(1)=a,u(2)=b
syms x(t)
x = dsolve(diff(x)+u(1)*x==u(2),x(0)==x0(1)); %建立模型求解
xt = vpa(x,6) %以小数格式显示微分方程的解
prediction1 = subs(x,t,[0:n-1]); %求已知数据的预测值
prediction1 = double(prediction1); %符号数转换成数值类型,以便做差分运算
prediction = [x0(1),diff(prediction1)] %差分运算,还原数据
epsilon = x0'-prediction %计算残差
delta = abs(epsilon./x0') %计算相对残差
rho = 1-(1-0.5*u(1))/(1+0.5*u(1))*lamda'%计算级比偏差值,u(1)=a

4.

5.

参考链接:

  • 概述

如果要学习数学建模的话,数据处理是一个必须要学习的,不然就算你有了一堆的数据,不会处理也没有啥用,这篇文章主要来学习matlab数据处理的一些入门级的操作和使用。(其实我更喜欢用python处理数据,有兴趣的可以看下《python之数据处理详解》,如果没学过matlab,建议先看看《Matlab基础入门笔记》,学习之路漫漫啊!)

1.数据读取

从EXCEL读取

使用xlsread()读取,虽然还能用,但是官方已经不推荐了

num = xlsread(filename) 读取名为 filename 的 Microsoft® Excel® 电子表格工作表中的第一张工作表,并在一个矩阵中返回数值数据。

num = xlsread(filename,sheet) 读取指定的工作表。

示例

num = xlsread(filename,xlRange) 从工作簿的第一个工作表的指定范围内读取数据。使用 Excel 范围语法,例如 'A1:C3'

示例

num = xlsread(filename,sheet,xlRange) 读取指定的工作表和范围。

num = xlsread(filename,sheet,xlRange,'basic')basic 导入模式下读取电子表格中的数据。如果您的计算机未安装 Windows® 版 Excel 或者您正在使用 MATLAB® Online™,xlsread 会自动在 basic 导入模式下运行,该模式支持 XLS、XLSX、XLSM、XLTX 和 XLTM 文件。

如果不指定所有参数,请使用空字符向量 '' 作为占位符,例如,num = xlsread(filename,'','','basic')

例:

a = xlsread('in.xlsz',2,'A1:B5')

从TXT读取

读取矩阵(推荐)

readmatrix():从文件中读取矩阵

语法:

A = readmatrix(filename)
A = readmatrix(filename,opts)
A = readmatrix(___,Name,Value)
说明

A = readmatrix(filename) 通过从文件中读取列向数据来创建数组。readmatrix 函数可自动检测文件的导入参数。

A = readmatrix(filename,opts) 使用导入选项 opts 创建表。

A = readmatrix(___,Name,Value) 基于文件创建一个数组,并通过一个或多个名称-值对组参数指定其他选项

示例:

M = readmatrix('basic_matrix.txt')
% 默认情况下,preview 函数显示第一个工作表中的数据。文件中的前八个变量包含数值数据
opts = detectImportOptions('airlinesmall_subset.xlsx');
preview('airlinesmall_subset.xlsx',opts)
% 配置 opts 对象中的值,以便从名为 '2007' 的工作表中导入前五个变量的 10 行
opts.Sheet = '2007';
opts.SelectedVariableNames = [1:5]; 
opts.DataRange = '2:11';
M = readmatrix('airlinesmall_subset.xlsx',opts)
%从名为 '2007' 的工作表中导入前 5 个变量的 10 行
M = readmatrix('airlinesmall_subset.xlsx','Sheet','2007','Range','A2:E11')

读取元胞数组

readcell():从文件中读取元胞数组

用法和语法都与readmatrix差不多,不再赘述。

元胞数组:这是一个新鲜的名词,原以为是什么高大上的东西,其实就是数组的集合。

读取图片

小知识:这里用的图片类型可能与我们日常见到的后缀名(jpg,png)有所不同,这里就稍微补充一下,例如:

索引图像:一种把像素值直接作为RGB调色板下标的图像。索引图像可把像素值“直接映射”为调色板数值。(后缀有:bmptif

一幅索引图包含一个数据矩阵data和一个调色板矩阵map,数据矩阵可以是uint8,uint16或双精度类型的,而调色板矩阵则总是一个m×3的双精度矩阵

函数

imread():从图形文件读取图像(im就是图像image的缩写)

使用方法

A = imread(filename)filename 指定的文件读取图像,并从文件内容推断出其格式。如果 filename 为多图像文件,则 imread 读取该文件中的第一个图像。

A = imread(filename,fmt) 另外还指定具有 fmt 指示的标准文件扩展名的文件的格式。如果 imread 找不到具有 filename 指定的名称的文件,则会查找名为 filename.fmt 的文件。

A = imread(___,idx) 从多图像文件读取指定的图像。此语法仅适用于 GIF、CUR、ICO、TIF 和 HDF4 文件。您必须指定 filename 输入,也可以指定 fmt

示例

A = imread(___,Name,Value) 使用一个或多个名称-值对组参数以及先前语法中的任何输入参数来指定格式特定的选项。

示例

[A,map] = imread(___)filename 中的索引图像读入 A,并将其关联的颜色图读入 map。图像文件中的颜色图值会自动重新调整到范围 [0,1] 中。

示例

[A,map,transparency] = imread(___) 另外还返回图像透明度。此语法仅适用于 PNG、CUR 和 ICO 文件。对于 PNG 文件,如果存在 alpha 通道,transparency 会返回该 alpha 通道。对于 CUR 和 ICO 文件,它为 AND(不透明度)掩码。

例子:

读取视频

2.

3.

4.

5.

参考链接:

概述

1.

2.

3.代码的实现

重点还是来看下代码吧。(代码有些长,函数的参数一些解释都放在上面了,方便查阅)

%% 数据准备
% 清空环境变量
clear all
clc

% 程序运行计时开始
t0 = clock;

%导入数据
citys=xlsread('Chap9_citys_data.xlsx', 'B2:C53');
%xlsread(filename,xlRange) 从工作簿的第一个工作表的指定范围内读取数据。使用 Excel 范围语法,例如 'A1:C3'
%如未指定 sheet,则 xlRange 必须包括两个角落和一个冒号字符


%% 计算城市间相互距离
n = size(citys,1);   
%仅计算citys的第一个维度的长度
D = zeros(n,n);
%创建一个n×n的零矩阵,相当于初始化矩阵
for i = 1:n
    for j = 1:n
        if i ~= j
            D(i,j) = sqrt(sum((citys(i,:) - citys(j,:)).^2)); %
        else
            D(i,j) = 1e-4;      %设定的对角矩阵修正值,保证启发函数分母不为0
        end
    end    
end

%% 初始化参数
m = 75;                              % 蚂蚁数量
alpha = 1;                           % 信息素重要程度因子
beta = 5;                            % 启发函数重要程度因子
vol = 0.2;                           % 信息素挥发(volatilization)因子
Q = 10;                               % 常系数
Heu_F = 1./D;                        % 启发函数(heuristic function)
Tau = ones(n,n);                     % 信息素矩阵
Table = zeros(m,n);                  % 路径记录表
iter = 1;                            % 迭代次数初值
iter_max = 100;                      % 最大迭代次数 
Route_best = zeros(iter_max,n);      % 各代最佳路径       
Length_best = zeros(iter_max,1);     % 各代最佳路径的长度  
Length_ave = zeros(iter_max,1);      % 各代路径的平均长度  
Limit_iter = 0;                      % 程序收敛时迭代次数

%% 迭代寻找最佳路径
while iter <= iter_max
    % 随机产生各个蚂蚁的起点城市
      start = zeros(m,1);
      for i = 1:m
          temp = randperm(n);
          start(i) = temp(1);
      end
      Table(:,1) = start; 
      % 构建解空间
      citys_index = 1:n;
      % 逐个蚂蚁路径选择
      for i = 1:m
          % 逐个城市路径选择
         for j = 2:n
             tabu = Table(i,1:(j - 1));           % 已访问的城市集合(禁忌表)
             allow_index = ~ismember(citys_index,tabu);    % 参加说明1(程序底部)
             allow = citys_index(allow_index);  % 待访问的城市集合
             P = allow;
             % 计算城市间转移概率
             for k = 1:length(allow)
                 P(k) = Tau(tabu(end),allow(k))^alpha * Heu_F(tabu(end),allow(k))^beta;
             end
             P = P/sum(P);
             % 轮盘赌法选择下一个访问城市
            Pc = cumsum(P);     %参加说明2(程序底部)
            target_index = find(Pc >= rand); 
            target = allow(target_index(1));
            Table(i,j) = target;
         end
      end
      % 计算各个蚂蚁的路径距离
      Length = zeros(m,1);
      for i = 1:m
          Route = Table(i,:);
          for j = 1:(n - 1)
              Length(i) = Length(i) + D(Route(j),Route(j + 1));
          end
          Length(i) = Length(i) + D(Route(n),Route(1));
      end
      % 计算最短路径距离及平均距离
      if iter == 1
          [min_Length,min_index] = min(Length);
          Length_best(iter) = min_Length;  
          Length_ave(iter) = mean(Length);
          Route_best(iter,:) = Table(min_index,:);
          Limit_iter = 1; 
          
      else
          [min_Length,min_index] = min(Length);
          Length_best(iter) = min(Length_best(iter - 1),min_Length);
          Length_ave(iter) = mean(Length);
          if Length_best(iter) == min_Length
              Route_best(iter,:) = Table(min_index,:);
              Limit_iter = iter; 
          else
              Route_best(iter,:) = Route_best((iter-1),:);
          end
      end
      % 更新信息素
      Delta_Tau = zeros(n,n);
      % 逐个蚂蚁计算
      for i = 1:m
          % 逐个城市计算
          for j = 1:(n - 1)
              Delta_Tau(Table(i,j),Table(i,j+1)) = Delta_Tau(Table(i,j),Table(i,j+1)) + Q/Length(i);
          end
          Delta_Tau(Table(i,n),Table(i,1)) = Delta_Tau(Table(i,n),Table(i,1)) + Q/Length(i);
      end
      Tau = (1-vol) * Tau + Delta_Tau;
    % 迭代次数加1,清空路径记录表
    iter = iter + 1;
    Table = zeros(m,n);
end

%% 结果显示
[Shortest_Length,index] = min(Length_best);
Shortest_Route = Route_best(index,:);
Time_Cost=etime(clock,t0);
disp(['最短距离:' num2str(Shortest_Length)]);
disp(['最短路径:' num2str([Shortest_Route Shortest_Route(1)])]);
disp(['收敛迭代次数:' num2str(Limit_iter)]);
disp(['程序执行时间:' num2str(Time_Cost) '秒']);

%% 绘图
figure(1)
plot([citys(Shortest_Route,1);citys(Shortest_Route(1),1)],...  %三点省略符为Matlab续行符
     [citys(Shortest_Route,2);citys(Shortest_Route(1),2)],'o-');
grid on
for i = 1:size(citys,1)
    text(citys(i,1),citys(i,2),['   ' num2str(i)]);
end
text(citys(Shortest_Route(1),1),citys(Shortest_Route(1),2),'       起点');
text(citys(Shortest_Route(end),1),citys(Shortest_Route(end),2),'       终点');
xlabel('城市位置横坐标')
ylabel('城市位置纵坐标')
title(['ACA最优化路径(最短距离:' num2str(Shortest_Length) ')'])
figure(2)
plot(1:iter_max,Length_best,'b')
legend('最短距离')
xlabel('迭代次数')
ylabel('距离')
title('算法收敛轨迹')
%--------------------------------------------------------------------------
%% 程序解释或说明
% 1. ismember函数判断一个变量中的元素是否在另一个变量中出现,返回0-1矩阵;
% 2. cumsum函数用于求变量中累加元素的和,如A=[1, 2, 3, 4, 5], 那么cumsum(A)=[1, 3, 6, 10, 15]。

4.

参考链接:

  • 概述

上篇文章讲解了python使用sympy求导,定积分和不定积分求解的一些基本方法,这次我们就来学习一下矩阵在python中的使用和运算吧ヽ( ̄▽ ̄)ノ

本文使用的是大名鼎鼎的Numpy,此库在线性代数,傅里叶变换和随机数等方面有较为突出的表现,而且也是使用率非常高的库!

1.安装和导入

pip3 install numpy

如果你有多个python版本的话,可以采用官方提供的方法。

python -m pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose
Ubuntu and Debian
sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
Mac

对于Macports的 Python 3.5,在终端中执行以下命令:

(其他版本类似)

sudo port install py35-numpy py35-scipy py35-matplotlib py35-ipython +notebook py35-pandas py35-sympy py35-nose

当然,还是建议使用anaconda,里面有大量的科学包,方便使用!

2.矩阵的创建

我会根据我的理解和官方教程来进行使用,英语好的可以直接去官网看,防止我可能出现的理解误差。

请认真看注释!

array()函数

array是用来创建数组的,但同样可以创建出矩阵,不过需要转换

# 多个维度  
import numpy as np 
h = np.array([[1,  2],  [3,  4],[5,6]])  #逗号隔开,数字后的空格可以省去
print (h)

补充知识:

构建随机数组
# 构建一个4*4的随机数组
array_1 = random.rand(4,4)

mat()函数

mat()函数将目标数据的类型转化成矩阵(matrix)与MATLAB中matrices等价。

有两种创造矩阵的方法

import numpy as np
a = np.mat('1 3;3 4')
b = np.mat([[1,2],[3,4]])
print(a)
print(b)

两者的区别:

虽然mat和array输出的矩阵看起来是一模一样的,但是我们可以用type()方法来查看他们的不同

print(type(a))
print(type(b))
print(type(h))  //此处的a,b,h与上文的对应

输出:

<class 'numpy.matrix'>
<class 'numpy.matrix'>
<class 'numpy.ndarray'>

那么这个格式的不同意味着什么呢?

首先,mat() 函数与array()函数生成矩阵所需的数据格式有区别,mat()函数中数据可以为字符串以分号(;)分割或者为列表形式以逗号(,)分割,而array()函数中数据只能为后者形式。

因为类型不同,则要用mat函数转换为矩阵后才能进行一些线性代数的操作。(单词释义:matrix:矩阵,array:序列,排列)

转换:
matrix_1 = np.mat(c)

3.

4.矩阵的运算

NumPy 提供了线性代数函数库 linalg,该库包含了线性代数所需的所有功能,可以看看下面的说明:

函数 描述
dot 两个数组的点积,即元素对应相乘。
vdot 两个向量的点积
inner 两个数组的内积
matmul 两个数组的矩阵积
determinant 数组的行列式
solve 求解线性矩阵方程
inv 计算矩阵的乘法逆矩阵

5.

参考链接:

https://www.cnblogs.com/wj-1314/p/10244807.html

https://www.runoob.com/numpy/numpy-mathematical-functions.html

https://www.cnblogs.com/abella/p/10207945.html

https://numpy.org/devdocs/user/quickstart.html

  • 概述

经过了简单的入门后,就要开始对Matlab的矩阵相关的运算开始学习了,因为矩阵在数据分析和处理方面起到相当重要的作用,必须得好好学习并且能熟练运用。(虽然之前的基础也没有打好,有时间就去回顾吧!)

1.矩阵的创建

matlab矩阵的创建方式有如下几种:直接输入、读取外部数据、内置函数、M文件编程

(a) 直接输入:直接创建矩阵要注意如下规则:矩阵元素必须在方括号[ ]内;矩阵同行元素之间用空格或逗号(,)隔开;矩阵的行与列之间用分号(;)隔开。

例1.1

>> A = [1 2 3;4,5,6;7 8 9]

A =

1 2 3

4 5 6

7 8 9

(b) 读取外部数据

通过load, importdata, xlsread等函数直接导入外部文件中的矩阵数据。

例1.2

% 读取数据 trees

load trees

% 读取二进制数据文件

image(X)

% 以图像的形式显示数组 X

colormap(map)

% 设置颜色查找表为map

(c) 内置函数

在MATLAB中,有很多系统内置特殊函数可直接用于创建矩阵,如下表:

20200308170840

例1.3

Z1=zeros(4,4)

% 产生4*4全为0的矩阵

Z2=ones(4,4)

% 产生4*4 全为1的矩阵

Z3=eye(4,4)

% 产生4*4的单位矩阵

Z4=rand(4,4)

% 产生4*4的在(0,1)区间均匀分布的随机阵

Z5=randn(4,4)

% 产生4*4的均值为0,方差为1的标准正态分布随机矩阵

Z6=hilb(3)

% 产生3维的Hilbert阵

Z7=magic(3)

% 产生3阶的魔方阵

(d) M文件编程

用M文件编程来实现创建,以.m格式保存该文件,此法也是matlab编程中最常用的。

例1.4

2.

3.

4.

5.

原文链接:

https://mp.weixin.qq.com/s/HWLKuVzHtKFoIPPFsBck9A

  • 概述

ε=(´ο`*)))唉,不知为啥记性老是那么差,难道是用脑少变得越来越蠢了?不行,得想办法解决,这不,把python的一些知识点和易混淆的知识统统放在这里吧,方便以后记忆和查看。这篇文章可能会随时间变得越来越长,请做好心里准备!

1.练习

完成《python编程:从入门到实践(第二版)》

2.

3.

4.函数及模块

函数的使用

两种导入方法的不同: 详情

import   //模块.函数

from…import  // 直接使用函数名使用就可以了

内置函数

1 abs()

绝对值或复数的模

print(abs(-10))
10

2 all()

接受一个迭代器,如果迭代器的所有元素都为真,那么返回True,否则返回False

In [2]: all([1,0,3,6])
Out[2]: False

In [3]: all([1,2,3])
Out[3]: True

3 any()

接受一个迭代器,如果迭代器里有一个元素为真,那么返回True,否则返回False

In [4]: any([0,0,0,[]])
Out[4]: False

In [5]: any([0,0,1])
Out[5]: True

4 ascii()  

调用对象的repr() 方法,获得该方法的返回值

In [30]: class Student():
    ...:     def __init__(self,id,name):
    ...:         self.id = id
    ...:         self.name = name
    ...:     def __repr__(self):
    ...:         return 'id = '+self.id +', name = '+self.name

In [33]: print(xiaoming)
id = 001, name = xiaoming

In [34]: ascii(xiaoming)
Out[34]: 'id = 001, name = xiaoming'

5 bin()

将十进制转换为二进制

In [35]: bin(10)
Out[35]: '0b1010'

6 oct()

将十进制转换为八进制

In [36]: oct(9)
Out[36]: '0o11'

7 hex()

将十进制转换为十六进制

In [37]: hex(15)
Out[37]: '0xf'

8 bool()  

测试一个对象是True, 还是False.

In [38]: bool([0,0,0])
Out[38]: True

In [39]: bool([])
Out[39]: False

In [40]: bool([1,0,1])
Out[40]: True

9 bytes()  

将一个字符串转换成字节类型

In [44]: s = "apple"

In [45]: bytes(s,encoding='utf-8')
Out[45]: b'apple'

10 str()  

字符类型数值类型等转换为字符串类型

In [46]: integ = 100

In [47]: str(integ)
Out[47]: '100'

11 callable()  

判断对象是否可以被调用,能被调用的对象就是一个callable 对象,比如函数 str, int 等都是可被调用的,但是例子4 中xiaoming这个实例是不可被调用的:

In [48]: callable(str)
Out[48]: True

In [49]: callable(int)
Out[49]: True

In [50]: xiaoming
Out[50]: id = 001, name = xiaoming

In [51]: callable(xiaoming)
Out[51]: False

12 chr()

查看十进制整数对应的ASCII字符

In [54]: chr(65)
Out[54]: 'A'

13 ord()

查看某个ascii对应的十进制数

In [60]: ord('A')
Out[60]: 65

14 classmethod()  

classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。

In [66]: class Student():
    ...:     def __init__(self,id,name):
    ...:         self.id = id
    ...:         self.name = name
    ...:     def __repr__(self):
    ...:         return 'id = '+self.id +', name = '+self.name
    ...:     @classmethod
    ...:     def f(cls):
    ...:         print(cls)

15 complie()  

将字符串编译成python 能识别或可以执行的代码,也可以将文字读成字符串再编译。

In [74]: s  = "print('helloworld')"

In [75]: r = compile(s,"<string>", "exec")

In [76]: r
Out[76]: <code object <module> at 0x0000000005DE75D0, file "<string>", line 1>

In [77]: exec(r)
helloworld

16 complex()

创建一个复数

In [81]: complex(1,2)
Out[81]: (1+2j)

17 delattr()  

删除对象的属性

In [87]: delattr(xiaoming,'id')

In [88]: hasattr(xiaoming,'id')
Out[88]: False

18 dict()  

创建数据字典

In [92]: dict()
Out[92]: {}

In [93]: dict(a='a',b='b')
Out[93]: {'a': 'a', 'b': 'b'}

In [94]: dict(zip(['a','b'],[1,2]))
Out[94]: {'a': 1, 'b': 2}

In [95]: dict([('a',1),('b',2)])
Out[95]: {'a': 1, 'b': 2}

19 dir()  

不带参数时返回当前范围内的变量,方法和定义的类型列表;带参数时返回参数的属性,方法列表。

In [96]: dir(xiaoming)
Out[96]:
['__class__',
 '__delattr__',
 '__dict__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__le__',
 '__lt__',
 '__module__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__',

 'name']

20 divmod()  

分别取商和余数

In [97]: divmod(10,3)
Out[97]: (3, 1)

21 enumerate()  

返回一个可以枚举的对象,该对象的next()方法将返回一个元组。

In [98]: s = ["a","b","c"]
    ...: for i ,v in enumerate(s,1):
    ...:     print(i,v)
    ...:
1 a
2 b
3 c

22 eval()  

将字符串str 当成有效的表达式来求值并返回计算结果;取出字符串中内容

In [99]: s = "1 + 3 +5"
    ...: eval(s)
    ...:
Out[99]: 9

23 exec()  

执行字符串或complie方法编译过的字符串,没有返回值

In [74]: s  = "print('helloworld')"

In [75]: r = compile(s,"<string>", "exec")

In [76]: r
Out[76]: <code object <module> at 0x0000000005DE75D0, file "<string>", line 1>

In [77]: exec(r)
helloworld

24 filter()  

过滤器,构造一个序列,等价于

[ item for item in iterables if function(item)]

在函数中设定过滤条件,逐一循环迭代器中的元素,将返回值为True时的元素留下,形成一个filter类型数据。

py2 是返回list對象,可以說是等價於列表推導式 py3 是返回一個類generator的iterator 就不一樣了 list它第二遍會是個空列表拿不到結果了

In [101]: fil = filter(lambda x: x>10,[1,11,2,45,7,6,13])

In [102]: list(fil)
Out[102]: [11, 45, 13]

25 float()  

将一个字符串或整数转换为浮点数

In [103]: float(3)
Out[103]: 3.0

26 format()  

格式化输出字符串,format(value, format_spec)实质上是调用了value的format(format_spec)方法。

In [104]: print("i am {0},age{1}".format("tom",18))
i am tom,age18

27 frozenset()  

创建一个不可修改的集合。

In [105]: frozenset([1,1,3,2,3])
Out[105]: frozenset({1, 2, 3})

28 getattr()  

获取对象的属性

In [106]: getattr(xiaoming,'name')
Out[106]: 'xiaoming'

29 globals()  

返回一个描述当前全局变量的字典

30 hasattr()

In [110]: hasattr(xiaoming,'name')
Out[110]: True

In [111]: hasattr(xiaoming,'id')
Out[111]: False

31 hash()  

返回对象的哈希值

In [112]: hash(xiaoming)
Out[112]: 6139638

32 help()  

返回对象的帮助文档

In [113]: help(xiaoming)
Help on Student in module __main__ object:

class Student(builtins.object)
 |  Methods defined here:
 |
 |  __init__(self, id, name)
 |
 |  __repr__(self)
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  __dict__
 |      dictionary for instance variables (if defined)
 |
 |  __weakref__
 |      list of weak references to the object (if defined)

33 id()  

返回对象的内存地址

In [115]: id(xiaoming)
Out[115]: 98234208

34 input()  

获取用户输入内容

In [116]: input()
aa
Out[116]: 'aa'

35 int()  

int(x, base =10) , x可能为字符串或数值,将x 转换为一个普通整数。如果参数是字符串,那么它可能包含符号和小数点。如果超出了普通整数的表示范围,一个长整数被返回。

In [120]: int('12',16)
Out[120]: 18

36 isinstance(object, classinfo)

判断object是否为类classinfo的实例,是返回true

In [20]: class Student():
    ...:     ...:     def __init__(self,id,name):
    ...:     ...:         self.id = id
    ...:     ...:         self.name = name
    ...:     ...:     def __repr__(self):
    ...:     ...:         return 'id = '+self.id +', name = '+self.name
    ...:

In [21]: xiaoming = Student('001','xiaoming')

In [22]: isinstance(xiaoming,Student)
Out[22]: True

37 issubclass(class, classinfo)

如果class是classinfo类的子类,返回True:

In [27]: class undergraduate(Student):
    ...:     def studyClass(self):
    ...:         pass
    ...:     def attendActivity(self):
    ...:         pass
    ...:

In [28]: issubclass(undergraduate,Student)
Out[28]: True

In [29]: issubclass(object,Student)
Out[29]: False

In [30]: issubclass(Student,object)
Out[30]: True

如果class是classinfo元组中某个元素的子类,也会返回True

In [26]: issubclass(int,(int,float))
Out[26]: True

38 iter(object, sentinel)

返回一个可迭代对象, sentinel可省略

In [72]: lst = [1,3,5]

In [73]: for i in iter(lst):
    ...:     print(i)
    ...:
1
3
5

sentinel 理解为迭代对象的哨兵,一旦迭代到此元素,立即终止:

In [81]: class TestIter(object):
    ...:         def __init__(self):
    ...:             self.l=[1,3,2,3,4,5]
    ...:             self.i=iter(self.l)
    ...:         def __call__(self):  #定义了__call__方法的类的实例是可调用的
    ...:             item = next(self.i)
    ...:             print ("__call__ is called,which would return",item)
    ...:             return item
    ...:         def __iter__(self): #支持迭代协议(即定义有__iter__()函数)
    ...:             print ("__iter__ is called!!")
    ...:             return iter(self.l)
    ...:

In [82]:     t = TestIter()
    ...:     t1 = iter(t, 3)
    ...:     for i in t1:
    ...:         print(i)
    ...:
__call__ is called,which would return 1
1
__call__ is called,which would return 3

39 len(s)

返回对象的长度(元素个数)

In [83]: dic = {'a':1,'b':3}

In [84]: len(dic)
Out[84]: 2

40 list([iterable])

返回可变序列类型

In [85]: list(map(lambda x: x%2==1, [1,3,2,4,1]))
Out[85]: [True, True, False, False, True]

41 map(function, iterable, )

返回一个将 function 应用于 iterable 中每一项并输出其结果的迭代器:

In [85]: list(map(lambda x: x%2==1, [1,3,2,4,1]))
Out[85]: [True, True, False, False, True]

可以传入多个iterable对象,输出长度等于最短序列的长度:

In [88]: list(map(lambda x,y: x%2==1 and y%2==0, [1,3,2,4,1],[3,2,1,2]))
Out[88]: [False, True, False, False]

42 max(iterable,*[, key, default])

返回最大值:

In [99]: max(3,1,4,2,1)
Out[99]: 4

In [100]: max((),default=0)
Out[100]: 0

In [89]: di = {'a':3,'b1':1,'c':4}
In [90]: max(di)
Out[90]: 'c'

In [102]: a = [{'name':'xiaoming','age':18,'gender':'male'},{'name':'
     ...: xiaohong','age':20,'gender':'female'}]
In [104]: max(a,key=lambda x: x['age'])
Out[104]: {'name': 'xiaohong', 'age': 20, 'gender': 'female'}

43 min(iterable,*[, key, default])

返回最小值

44 memoryview(obj)

返回由给定实参创建的“内存视图”对象, Python 代码访问一个对象的内部数据,只要该对象支持 缓冲区协议 而无需进行拷贝

45 next(iterator,[, default])

返回可迭代对象的下一个元素

In [129]: it = iter([5,3,4,1])

In [130]: next(it)
Out[130]: 5

In [131]: next(it)
Out[131]: 3

In [132]: next(it)
Out[132]: 4

In [133]: next(it)
Out[133]: 1

In [134]: next(it,0) #迭代到头,默认返回值为0
Out[134]: 0

In [135]: next(it)
----------------------------------------------------------------------
StopIteration                        Traceback (most recent call last)
<ipython-input-135-bc1ab118995a> in <module>
----> 1 next(it)

StopIteration:

46 object()

返回一个没有特征的新对象。object 是所有类的基类。

In [137]: o = object()

In [138]: type(o)
Out[138]: object

47 open(file)

返回文件对象

In [146]: fo = open('D:/a.txt',mode='r', encoding='utf-8')

In [147]: fo.read()
Out[147]: '\ufefflife is not so long,\nI use Python to play.'

mode取值表:

字符

意义

'r' 读取(默认)
'w' 写入,并先截断文件
'x' 排它性创建,如果文件已存在则失败
'a' 写入,如果文件存在则在末尾追加
'b' 二进制模式
't' 文本模式(默认)
'+' 打开用于更新(读取与写入)

48 pow(base, exp[, mod])

base为底的exp次幂,如果mod给出,取余

In [149]: pow(3, 2, 4)
Out[149]: 1

49 print(objects)

打印对象,此函数不解释

50 class property(fget=None, fset=None, fdel=None, doc=None)

返回 property 属性,典型的用法:

class C:
    def __init__(self):
        self._x = None

    def getx(self):
        return self._x

    def setx(self, value):
        self._x = value

    def delx(self):
        del self._x
    # 使用property类创建 property 属性
    x = property(getx, setx, delx, "I'm the 'x' property.")

使用python装饰器,实现与上完全一样的效果代码:

class C:
    def __init__(self):
        self._x = None

    @property
    def x(self):
        return self._x

    @x.setter
    def x(self, value):
        self._x = value

    @x.deleter
    def x(self):
        del self._x

51 range(stop)

range(start, stop[,step])

生成一个不可变序列:

In [153]: range(11)
Out[153]: range(0, 11)

In [154]: range(0,11,1)
Out[154]: range(0, 11)

52 reversed(seq)

返回一个反向的 iterator:

In [155]: rev = reversed([1,4,2,3,1])

In [156]: for i in rev:
     ...:     print(i)
     ...:
1
3
2
4
1

53 round(number[, ndigits])

四舍五入,ndigits代表小数点后保留几位:

In [157]: round(10.0222222, 3)
Out[157]: 10.022

54 class set([iterable])

返回一个set对象,可实现去重:

In [159]: a = [1,4,2,3,1]

In [160]: set(a)
Out[160]: {1, 2, 3, 4}

55 class slice(stop)

class slice(start, stop[, step])

返回一个表示由 range(start, stop, step) 所指定索引集的 slice对象

In [170]: a = [1,4,2,3,1]

In [171]: a[slice(0,5,2)] #等价于a[0:5:2]
Out[171]: [1, 2, 1]

56 sorted(iterable, *, key=None, reverse=False)

排序:

In [174]: a = [1,4,2,3,1]

In [175]: sorted(a,reverse=True)
Out[175]: [4, 3, 2, 1, 1]

In [178]: a = [{'name':'xiaoming','age':18,'gender':'male'},{'name':'
     ...: xiaohong','age':20,'gender':'female'}]
In [180]: sorted(a,key=lambda x: x['age'],reverse=False)
Out[180]:
[{'name': 'xiaoming', 'age': 18, 'gender': 'male'},
 {'name': 'xiaohong', 'age': 20, 'gender': 'female'}]

57 @staticmethod

将方法转换为静态方法,不做解释

58 class str(object=’’)

返回一个 str版本的 objectstr 是内置字符串 class

59 sum(iterable, /, start=0)

求和:

In [181]: a = [1,4,2,3,1]

In [182]: sum(a)
Out[182]: 11

In [185]: sum(a,10) #求和的初始值为10
Out[185]: 21

60 super([type[, object-or-type]])

返回一个代理对象,它会将方法调用委托给 type 的父类或兄弟类

61 tuple([iterable])

虽然被称为函数,但 tuple 实际上是一个不可变的序列类型

62 class type(object)

class type(name, bases, dict)

传入一个参数时,返回 object 的类型:

In [186]: type(xiaoming)
Out[186]: __main__.Student

In [187]: type(tuple())
Out[187]: tuple

63 zip(*iterables)

创建一个聚合了来自每个可迭代对象中的元素的迭代器:

In [188]: x = [3,2,1]
In [189]: y = [4,5,6]
In [190]: list(zip(y,x))
Out[190]: [(4, 3), (5, 2), (6, 1)]


In [191]: a = range(5)
In [192]: b = list('abcde')
In [193]: b
Out[193]: ['a', 'b', 'c', 'd', 'e']
In [194]: [str(y) + str(x) for x,y in zip(a,b)]
Out[194]: ['a0', 'b1', 'c2', 'd3', 'e4']

转载自:Python与算法社区

5.

参考链接:

  • 概述

本文学习math库的使用,这篇文章 内容详细,大家可以参照并相互学习!

数学函数

函数 返回值 ( 描述 )
abs(x) 返回数字的绝对值,如abs(-10) 返回 10
ceil(x) 返回数字的上入整数,如math.ceil(4.1) 返回 5
cmp(x, y) 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。 **Python 3 已废弃,使用 (x>y)-(x。
exp(x) 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045
fabs(x) 返回数字的绝对值,如math.fabs(-10) 返回10.0
floor(x) 返回数字的下舍整数,如math.floor(4.9)返回 4
log(x) 如math.log(math.e)返回1.0,math.log(100,10)返回2.0
log10(x) 返回以10为基数的x的对数,如math.log10(100)返回 2.0
max(x1, x2,…) 返回给定参数的最大值,参数可以为序列。
min(x1, x2,…) 返回给定参数的最小值,参数可以为序列。
modf(x) 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。
pow(x, y) x**y 运算后的值。
[round(x ,n]) 返回浮点数 x 的四舍五入值,如给出 n 值,则代表舍入到小数点后的位数。其实准确的说是保留值将保留到离上一位更近的一端。
sqrt(x) 返回数字x的平方根。
参考链接:

https://www.runoob.com/python3/python3-number.html

一个很棒的示范例文,以后忘记一些语法和排版的时候可以翻来看看,很有帮助,强推!

该网站支持在线排版和其他非常实用的功能!)

如果你觉得Md2All对你有帮助,欢迎赞赏[^1]

内容目录(由[TOC]自动生成)

[TOC]

Md2All 简介

Markdown排版利器,支持 “一键排版” 、自定义css、80多种代码高亮。
能让Markdown内容,无需作任何调整就能一键复制到微信公众号、博客园、掘金、知乎、csdn、51cto、wordpress、hexo。。。等平台。
支持把图片自动上传到云图床;
支持Latex数学公式在公众号等平台完美显示;
支持生成带样式的html文件;
甚至支持直接用原生的html,css排版。

详细教程

Md2All详细教程,请参考:https://www.cnblogs.com/garyyan/p/8329343.html
####对公众号、博客的优化
支持代码块,并解决常见的代码块换行不正确,特别是iPone、iPad上不能滚动的问题;
解决把内容粘贴到公众号时,图片、或样式丢失的问题;

支持直接把页面”复制”到 “CSDN” 和 “博客园” 中,所有的样式保持一致。
请参考此博文:http://blog.csdn.net/gary_yan/article/details/78645303
支持直接把页面”复制”到 “掘金” 中:
请参考此博文:https://juejin.im/post/5a1bcc6ef265da431f4acb09
支持直接把页面”复制”到 “知乎” 、51CTO、worpress ,hex……中。

代码块显示效果

注:markdown对代码块的语法是开始和结束行都要添加:```,其中 ` 为windows键盘左上角那个,如下:

public class MyActivity extends AppCompatActivity {
@Override  //override the function
    protected void onCreate(@Nullable Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       try {
            OkhttpManager.getInstance().setTrustrCertificates(getAssets().open("mycer.cer");
            OkHttpClient mOkhttpClient= OkhttpManager.getInstance().build();
        } catch (IOException e) {
            e.printStackTrace();
        }
}

要精确指定语言(如:java,cpp,css,xml,javascript,python,php,go,kotlin,lua,objectivec等等)时,在头部直接指定,如:```javascript,如下:

function DisplayWindowSize(){

  var w=window.innerWidth
  || document.documentElement.clientWidth
  || document.body.clientWidth;
}

如果所有的”代码主题”都不符合你的要求,你可以参考”一键排版”下的”代码块样式”自定义自己喜欢的代码高亮

图片显示

下面的是我的公众号二维码图片,欢迎关注。
图注:大少公众号
注:markdown对图片链接的语法是:![](),如:![这里写图片描述](http://img.blog.csdn.net/20171012163602706),
可直接把网络图片地址添加到markdown中,
默认为图片居中,如果想居左时,请打开”一键排版”下的css样式中的img{margin:0 0;},
[这里写图片描述]中对图片的描述内容会自动生成在图片的底部,对应样式figcaption{}

云图床功能

Md2All支持云图床,设置好云图床后,能把本地图片自动上传到云图床,并自动生成markdown.
请参考云图床教程:https://www.cnblogs.com/garyyan/p/9181809.html

Latex数学公式(能正确复制到公众号等平台):

“复制”时会自动把Latex数学公式转换为图片,并自动上传到云图床(如果在“图片”设置了“…,自动上传到云图床”)。
请参考:Md2All,让公众号完美显示Latex数学公式

行内公式:$…$

是的,我就是行内公式:$e^{x^2}\neq{e^x}^2$,排得OK吗?

块公式:$$…$$

$$e^{x^2}\neq{e^x}^2$$
来个 “复杂点” 的:
$$H(D_2) = -(\frac{2}{4}\ log_2 \frac{2}{4} + \frac{2}{4}\ log_2 \frac{2}{4}) = 1$$
矩阵:
$$
\begin{pmatrix}
1 & a_1 & a_1^2 & \cdots & a_1^n \
1 & a_2 & a_2^2 & \cdots & a_2^n \
\vdots & \vdots & \vdots & \ddots & \vdots \
1 & a_m & a_m^2 & \cdots & a_m^n \
\end{pmatrix}
$$
对应“一键排版”的css样式关键字为:.katex

Latex复制到公众号等各平台的特别说明

复杂的行内公式(顶部和底部突出很多那种),转换后,如果显示不完整,请改为块公式

有些比较复杂的行内公式,转换后,可能会出现顶部和底部很突出的部分看不见的情况,把它改成块公式就OK。

公众号报”图片粘贴失败“时,配合云图床完美解决

如果你发现复制到公众号时报”图片粘贴失败“,那是因为公众号有个很奇怪的问题:当复制很小很小的本地图片时,就可能会报”图片粘贴失败“,而其它的平台暂时没遇到。
解决的办法是点“图片”图标,设置好图床信息,并选“…,自动上传到云图床”。
请参考云图床教程:https://www.cnblogs.com/garyyan/p/9181809.html

针对“知乎”的解决方法

知乎是一个比较神奇的网站,会把你的所有的样式恢复为默认的,并图片一定是居中的,也不能直接复制本地的图片。
所以你如果想要在知乎上正常显示:
1:只用块公式,或你可以接受行内公式在知乎上显示变成了块公式;
2:设置云图床,参考上面公众号那样设置“图片”->“…,自动上传到云图床”。

Tips

自动保存

请点击左上角”编辑”图标再开始写作,这样就能自动保存写作内容,目前,所有保存的内容都是储存在本地浏览器缓存中(local storage),所以,就算重新开机,这些内容都不会丢失的呵,但为了安全起见,在未实现帐号云同步功能前,请自行备份重要内容;
####一键复制
一键复制 请点击工具栏的 复制,否则会可能出现奇怪的问题。

一键排版

“一键排版” 支持标准的css,已提供了不少的样式模板,但因为每个人的喜好不一样,所以,如果现有的样式模板不适合你,请尽情地自定义css样式吧。
就算改错了也就”恢复预设值”就OK了,所以不用担心呵。一旦掌握自定义css样式后,你就会知到它到底有多大的威力了 ^_^;

新版本对某主题样式更新时

当你保存了某排版主题的样式后,Md2All默认会使用你此主题保存的样式,所以,当新版本的Md2All对此主题样式有更新时,你需要“恢复预设值”才能看得到最新的样式。“恢复预设值”前,你可能需要备份一下你之前更改过的样式,否则会被覆盖掉。所以,我建议你把自己的样式保存在“最爱样式”下。

浏览器兼容性问题,建议用Google chrome

本人用Google Chrome 和Firefox 浏览器做测试时,没发现问题,但用Safari时会存在问题。如果你发现有奇怪的问题,建议用Google chrome。

Markdown基本语法

标题

支持6种大小的标题,分别对应#,##,###,####,#####,######,和样式文件中的h1,...,h6如:

H5
H6

行内代码

如:AppCompatActivity类,markdown对行内代码的语法是前后用:`,其中 ` 为windows键盘左上角那个,

强调

我是强调

斜体

试试斜体

强调的斜体

试试强调的斜体

删除

试试 删除

外链的超链接

试试外链的超链接:我是外链的超链接,markdown对链接的语法为:[](),如:[我是外链的超链接](http://blog.csdn.net/gary_yan/article/details/78645303)

页内的超链接

试试页内的超链接:我是页内的超链接,注:你先要在要跳转的到地方放置一个类似:<a id="jump_1">任意内容</a>的锚点。由id="jump_1" 来匹配。

有序列表

  1. 有序列表 1
  2. 有序列表 2
  3. 有序列表 3

无序列表

  • 无序列表 1
  • 无序列表 2
  • 无序列表 3

引用块

只需要在前面加 >,如下:

我是引用块
微信公众号:颜家大少
欢迎关注我,一起学习,一起进步!

分隔线


Markdown扩展语法

表格

班级 男生 女生
一(7)班 30 25
一(8)班 25 30

注:表格在公众号预览时,可能在PC端显示的不是正确的全屏,但在手机上预览时就会正常显示为全屏的了。

任务列表

  • 任务1,已完成;
  • 任务2,已完成;
  • 任务3,未完成;

注脚

我是注脚^10。点点就能知到我跳到了那儿。
或跳到放置:<a id="footnote-10">任意内容</a>的地方,^10 对应id="footnote-10"

TOC

看内容目录就是用[toc]生成的
注:只要放置:[TOC],就能把其后面的标题如:#,##,...######自动生成目录树,注意,[TOC]要独立一行,并前面和后面都要空一行

直接支持html,css

如果你懂html和css,那下面这些效果就不在话下了:

来个页内跳转,跳转到文未的:<a id="jump_1">我是页内跳转到的位置</a> ,对应:id="jump_1"
先给点颜色你看看
再给点颜色你看看
试试改变字体大小
改变字体大小,再来个粗体又如何?

试试内容居中

那内容居右呢?

来个综合的试试
第二行

请参考”一键排版”中的”标题首字突出”样式的提示修改,可把此标题首字突出:

1试试首字突出

注:理论上Md2All是支持所有标准的html和css,但问题是公众号很多都不支持,所以上面只演示了部分支持的。


版本更新记录


版本号:V2.8.4
更新日期:2019-06-13
1:解决在iphone手机上代码不能横向滚动的问题

版本号:V2.8.3
更新日期:2018-07-09
1:增加对以下语言的highlight
dart,r,delphi,vb(vbnet),vbs(vbscript),vbscript-html

版本号:V2.8.2
更新日期:2018-06-28
1:结合云图床,解决了Latex公式复制到公众号时有可能报“图片粘贴失败的问题”;
2:结合云图床,解决了Latex公式复制到知乎的问题;
3:点“图片”图标时,在云图床设置上新增了:“需要转换为图片的内容,会自动上传到云图床”选项
4:在“一键排版”的各样式文件中更新了Latex的样式,主要是显示的大小,你可能需要“恢复预设值”才能看到新的样式.

更多请参考
Md2All版本更新记录


我是页内跳转到的位置

111

参考链接:

http://md.aclickall.com/#hspanclassfirstletter1span