Eclipse neon配置tomcat9遇到的坑及解决方法

操作环境:
Mac
Eclipse neon(4.6)
Tomcat 9


遇到的坑:
1. 安装TomcatPlugin报错 无法安装其插件
2. preferences中没有Server选项
3. Server中Runtime Environments没有tomcat9版本 无法配置
(导致jsp程序报错 not found on the Java Build Path)

解决方法:

  1. 安装TomcatPlugin报错 无法安装其插件
    网上的方法是通过http://tomcatplugin.sf.net/update 来安装
    可是事实上也可能是这个Eclipse的版本问题 我们在线安装等半天最后说不行 所以这里采取的最好的方法是通过离线安装
    net.sf.eclipse.tomcat.updatesite-2016-09-21
    (链接:http://pan.baidu.com/s/1pLLWefh 密码:20q8)

    下载好压缩包后解压为文件夹,之后help-install new software-add-local-选择文件夹-然后安装就成功了

    之后在preferences中可以找到tomcat 选择版本为9 选则tomcat的路径 配置完成
    这时候工具栏就会出现tomcat的标志了
    懒得上图了

  2. preferences中没有Server选项
    还是像刚才一样help-install new software-地址栏输入 http://download.eclipse.org/releases/neon
    然后下面那栏搜索JST(J2EE标准工具)下载
    打开preferences就能看到Server选项了
    如果不是这样安装或者用其他网上给的网址安装有可能出现下面这个问题
  3. Server中Runtime Environments没有tomcat9版本 没法配置环境 结果导致jsp程序报错 not found on the Java Build Path
    解决方法其实就是上面 一定要下载新版的插件才能出现tomcat9的选项

    然后记得在创建web程序时选上配置好的这个runtime environments 就不报错啦

java中this调用构造方法与对返回类实例

java中this常用有三种功能分别是:引用成员变量,调用构造方法,返回类实例。第一种功能比较容易理解,实际上也就是防止对象属性与方法中形参名相同。
哦对 顺便说下this的概念:this代表调用这个函数的对象。 其实和python中的self类似。

java中this调用构造方法

使用格式如下:

this([参数列表])

系统将根据参数列表来决定调用哪一个构造方法。使用this时还需注意下面几点:

  1. 用this调用构造方法时,该语句只能用在构造方法中。
  2. this语句必须是构造方法中的第一条语句。
  3. 和new不同,this虽然可以调用构造方法,但它只是执行构造方法中的语句,并不会创建对象。

(百度网友淡忘WHY66的回答)

举个例子

package cn.rui0;

public class Testhis {
    public Testhis() {
        this(911);//调用有参的构造方法 必须放在第一行
        System.out.println("无参");
    }
    public Testhis(int i) {
        System.out.println(i+"\n"+"有参");
    }


    public static void main(String[] args) {
        Testhis a=new Testhis();//创建对象的同时会调用无参的构造方法
    }
}

output:

911
有参
无参

好的,接下来说

java中this返回类实例

可以理解为返回类的对象,然后…要说的都在下面了..

package cn.rui0;

public class Testhis {
    int i;
    int num;
    public Testhis() {
        this(911);//必须放在第一行
        num=100;
        System.out.println("无参");
    }
    public Testhis(int i) {
        this.i=i+1;
        System.out.println(this.i+"\n"+"有参");

    }
    public Testhis aaa(){       //这里定义的返回值类型为Testhis这个类
        num++;
        return this;        
    }

    public static void main(String[] args) {
        Testhis a=new Testhis();//创建对象的同时会调用无参的构造方法
        Testhis b=new Testhis();//创建另一个对比
        System.out.println("*********************");
        System.out.println(a);//输出实例化的类的对象a的地址
        System.out.println(a.aaa());
        /*
         * 输出时运行了这个实例化的类的对象a中的方法aaa()
         * 而方法aaa()中返回了当下调用这个方法的对象a(因为用的是this所以是当下调用这个方法的对象a,而不是b)
         * 并且类型为Testhis,可以理解为又成为属于Testhis的一个对象,就是又有了Testhis类下的一波属性什么的
         * 所以输出的地址和上面a的一样,并且可以进行像下面这样的输出

        */
        System.out.println(b);//先对比一下输出地址 是不一样的对象 好了没它事了
        System.out.println(a.aaa().getClass().getName ());//获取当前类名
        System.out.println(a.num);//获取当前类实例化对象的属性
        System.out.println(a.aaa().num);
//      这部分可能有点抽象,本辣鸡打字可能也没说太清,大家不懂可以再多去对比几次的输出的语句和output去理解
    }
}

output:

912
有参
无参
912
有参
无参
*********************
cn.rui0.Testhis@7852e922
cn.rui0.Testhis@7852e922
cn.rui0.Testhis@4e25154f
cn.rui0.Testhis
102
103

注意:
被static修饰的方法没有this指针。因为被static修饰的方法是公共的,不能说属于哪个具体的对象的


感谢阅读,如果有错误非常欢迎指出~thx 🙂

java调用包时的问题

如果在同一个包内可以不用import 直接创建对象 比如同包内有一个class内容为

package cn.rui0;

public class Telphone {
    public Telphone() {
        // TODO Auto-generated constructor stub
        System.out.println("cn.rui0.Telphone");
    }
}

直接这样 或者注释掉第二行都可以调用

package cn.rui0;
import cn.rui0.Telphone;
public class pagbao {
    public static void main(String[] args) {
        Telphone phone = new Telphone();
    }
}

但如果还有个包或者子包,他们和上面那个包中有相同的类名时

package cn.rui0.cs;

public class Telphone {
    public Telphone() {

        // TODO Auto-generated constructor stub
        System.out.println("cn.rui0.cs.Telphone");
    }
}

调用时就需要

import cn.rui0.cs.Telphone;

才能输出 cn.rui0.cs.Telphone

如果你像下面这样调用 没有明确指明具体是哪个class

package cn.rui0;
import cn.rui0.cs.*;//或者调用其他包时没有指明文件
public class pagbao {
    public static void main(String[] args) {
        Telphone phone = new Telphone();
    }
}

则他会首先寻找自己包内有没有这个类,如果有就先调用自己包里的最后输出cn.rui0.Telphone 执行过程就如第一个一样。(如果没有就再调用import了的.cs里的这个类 最后输出的就是cn.rui0.cs.Telphone)像上面这个咱们2已经假设了两个包内有相同的类名的情况,它当然就会输出cn.rui0.Telphone了

so,
如果要调用的类在另一个包或者子包并与这个包中的类名不同,则可以用通配符调用其所有文件或者还是指定文件调用 如下

另一个包中的tclass类

package cn.ruilin;

public class tclass {
    public tclass() {
        // TODO Auto-generated constructor stub
        System.out.println("cn.ruilin.tclass");

    }
}

调用该包内其全部文件

package cn.rui0;
import cn.ruilin.*;
public class pagbao {
    public static void main(String[] args) {
        tclass phone = new tclass();
    }
}

这样是可以运行的 并且输出cn.ruilin.tclass

也就是说,你不导入包时程序会自动把本包下的文件导入提供调用,当然你也可以指明调用哪个。
而当导入其他包的类与本包类重名时,不能采用import 包名.*;此时java程序只承认本包下的文件;而应该采用import 包名.文件名,此时java程序只承认由其他包导入的文件。

java中方法与构造方法的理解

初学者可能会搞晕或者是不理解,个人认为要理解并区分方法与构造方法 我们首先应该了解他们的作用,用作用做对比才能方便区分,接下来才是慢慢了解如何使用。


首先先简单了解一下大概作用

  • 方法: 方法是语句的集合,它们在一起执行一个功能。实际上就相当于python或者c中的函数。
  • 构造方法: 构造方法其实就是对类进行里面数据的初始化定义,它是方法中的一种(方法分为三种,接下来会说到),你可以有也可以没有。没有系统会自动给你生成一个无参的。重点也是需要提前强调的是它需要与类名相同。

之后继续说

  • 方法: 一个类中的方法分为三类: 1)全局方法 2) 成员方法 3)构造方法
public class Test{
private  int xxx;   
public Test(int age){ //这是构造方法
xxxxxx
}
public void xxxxxx(int xxxx){  //这是成员方法
xxxxxx
}
public static int xxxxx(){ //这是全局方法,加了static ,成员方法就会变成全局方法
return xxxxx;
}
}

三者区别:

  1. 成员方法必须构造类的实例化对象进行访问
  2. 全局方法可以用类直接访问
  3. 构造方法是实例化对象时进行初始化的

一般情况下,定义一个方法包含以下语法:

修饰符 返回值类型 方法名(参数类型 参数名){
    ...
    方法体
    ...
    return 返回值;
}
  1. 修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
  2. 返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。
  3. 方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
  4. 参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
  5. 方法体:方法体包含具体的语句,定义该方法的功能。

 

  • 构造方法

在创建对象的时候,对象成员可以由构造函数方法进行初始化。

也就是我们创造实例化的代码中 new后面跟的就是构造方法

Telphone phone=new Telphone();

等号右面

new Telphone()

相当于是以Telphone类为模板,在堆空间里创建一个Telphone类对象

末尾的()代表着,在对象创建后,立即调用Telphone类的构造函数,对刚生成的对象进行初始化。

等号左面

Telphone phone

创建命名了一个Telphone类引用变量phone

这里用一下imooc的图

image

接下来再说下有参和无参的构造方法的区别

有参就是你可以在创建对象时候赋值

public Test(String name){
mz=name;
}

Test为构造方法(函数)名 需要与类名相同 

创建对象

Test name=new Test("xxxxx");

无参就需要这样

public Test(){
}
public String mingzi(String name){
mz=name;
return mz;
}

创建对象并赋值

Test nick=new Test();
nick.mingzi="ruilin";

总的来说,有参构造函数和无参构造函数都可以提前初始化一些值,但是有参可以在实例化时就进行赋值而无参不可以。这些赋值或者说初始化都是为了后面调用方法(函数)更加方便或者是去提供一些功能所必要的参数来防止报错,这也就是构造方法的作用。

最后再放一个有参的构造方法的例子便于理解

public class Testff {
	int num;
	public Testff(int n){
		num = n;
	}
	public int numb(int a,int b){
		System.out.println(a+"\n"+b+"\n"+num);
		int c=a+b+num;
		return c;				
	}

	public static void main(String[] args) {
		Testff test=new Testff(11);
		System.out.println(test.num+"\n"+"---------");
		System.out.println(test.numb(1,2));
	}

}

output:

11
---------
1
2
11
14

 


以上就是我对java中方法与构造方法的理解与区分,其中也简述了对有参与无参构造方法的一些理解,欢迎交流。

java实现桶排序

了解桶排序

这个算法就好比有 11 个桶,编号从 0~10。每出现一个数,就在对应编号的桶中放一个 小旗子,最后只要数数每个桶中有几个小旗子就 OK 了。例如 2 号桶中有 1 个小旗子,表示 2 出现了一次;3 号桶中有 1 个小旗子,表示 3 出现了一次;5 号桶中有 2 个小旗子,表示 5 出现了两次;8 号桶中有 1 个小旗子,表示 8 出现了一次。

image


如何实现桶排序

  1. 使用数组代替桶的作用,利用数组的下标直接排好顺序
  2. 每次遇到相应的旗子编号就对其对应的桶即相同的数组下标如a[5]的值+1用于记录出现几次
  3. 依次判断桶中的值即为输出的次数
  4. 依次按照次数输出桶的编号即数组的下标

 


利用java实现

题目:

考试成绩需要由小往大依次排序 成绩范围为0-10 学生数为5人 请依次输入学生成绩并进行排序

java code:
import java.util.Scanner;;
public class sortest {
	public static void main(String[] args) {
		
		int[] scores=new int[11];//定义一个空间大小为11的变量 0-10即11个
		Scanner input = new Scanner(System.in);//控制台等待输入
		for(int i=0;i<=10;i++){    //初始化scores值为0
			scores[i]=0;
		}
		for(int j=1;j<=5;j++){    //循环输入5名学生成绩
			System.out.println("请输入第"+j+"名学生成绩");
			int t=input.nextInt();
			scores[t]++;//计数
		}
		System.out.println("**************");
		for(int a=0;a<=10;a++){   //依次判断每个成绩
			for(int b=1;b<=scores[a];b++){   //依次判断每个成绩的人数
				System.out.println(a);
			}
		}
	}

	
}

 

xlrd基本操作并配合matplotlib绘图笔记

一个简单的小例子快速了解如何利用xlrd读取excel并借助plt绘图

//之前代码有误,导致上图显示女生数量与男生一样,代码已改正

#encoding=utf-8
import xlrd
import matplotlib.pylab as plt
from pylab import *
def main():
    book=xlrd.open_workbook('./pdtest.xlsx')
    sheet_name = book.sheet_names()[0]#获得指定索引的sheet名字
    print sheet_name
    sheet=book.sheet_by_name('sheet1')
    rows=sheet.nrows#行数
    cols=sheet.ncols#列数
    print rows,cols
    row_data=sheet.row_values(0)
    col_data=sheet.col_values(0)
    print row_data,col_data
    cell=sheet.cell_value(1,2)
    print cell
    for i in range(rows):#每行数据
        print sheet.row_values(i)
    col1=sheet.col_values(1)[1:]#去掉列名称 打印指定列
    print col1
    k = 0
    for i in col1:
        print int(i)
        if int(i)==int('2'):
            k+=1
    print k
    book1=xlrd.open_workbook('./reg.xls')
    #sheet_name1=book1.sheet_names()[0]
    #print sheet_name1
    list=book1.sheets()[0]
    nrows=list.nrows
    print nrows
    print "------------------"
    col2=list.col_values(4)[1:]
    g = 0
    b = 0
    for i in col2:
        if i == u"\u5973":
            g=g+1

        if i == u"\u7537":
            b+=1

    print g,b

    mpl.rcParams['font.sans-serif'] = ['SimHei']
    mpl.rcParams['axes.unicode_minus'] = False
    plt.figure(1)
    plt.bar(left=0,height=b,width=0.35,align="center",color="b",label="boy")
    plt.bar(left=0.5,height=g,width=0.35,align="center",color="y",label="girl")
    plt.title(u"2017太原市中考性别分布[柱状图]")
    plt.xlabel(u"性别")
    plt.ylabel(u"人数")
    plt.xticks((0, 0.5), (u"男", u"女"))
    plt.text(0, b+0.05, "%d" % b, ha="center", va="bottom")
    plt.text(0.5, g+0.05, "%d" % g, ha="center", va="bottom")
    #图中有误,之前把代码里面的参数g写成了b
    #plt.legend(loc="upper left")
    plt.show()


if __name__ == '__main__':
    main()

output:

sheet1
5 3
[u'', u'man', u'woman'] [u'', u'a', u'b', u'c', u'd']
1.0
[u'', u'man', u'woman']
[u'a', 2.0, 1.0]
[u'b', 6.0, 3.0]
[u'c', 2.0, 4.0]
[u'd', 1.0, 6.0]
[2.0, 6.0, 2.0, 1.0]
2
6
2
1
2
41609
------------------
20445 21163

 

 

 

Pandas基本操作笔记

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

#encoding=utf-8
import numpy as np
import pandas as pd
def main():
    #生成表格
    dates=pd.date_range("20170801",periods=8)
    df=pd.DataFrame(np.random.randn(8,5),index=dates,columns=list("ABCDE"))#生成框架
    print df
    dff=pd.DataFrame({"A":np.random.randint(1,10,8),"B":pd.date_range("20170707",periods=8)})
    print dff

    #基本操作
    print df.head(3)#打印前三行
    print df.tail(3)#打印后三行
    print df.index
    print df.values
    print df.T#转置
    print df.sort_values("C")#排序C列 升序
    print df.sort_index(axis=1,ascending=False)#用属性值排序 降序
    print df.describe()#数据的相关信息
    print df["A"]#切片
    print df[:3]
    print df["20170801":"20170806"]
    print df.loc[dates[0]]
    print df.loc["20170802":"20170806",["B","D"]]
    print df.at[dates[0],"C"]
    print df.iloc[1:3,2:4]
    print df.iloc[1,4]#2行第5列
    print df[df.B>0]
    print df[df<0]
    print df[df["E"].isin([1,2])]

    #基本设置
    sl=pd.Series(list(range(10,18)),index=pd.date_range("20170801",periods=8))
    print sl
    df["F"]=sl
    print df
    df.at[dates[0],"A"]=0
    print df
    df.iat[1,4]=666
    df.loc[:,"D"]=np.array([4]*len(df))
    print df
    df2=df.copy()#拷贝
    df2[df2<0]=-df2#负数变为正数
    print df2


if __name__ == '__main__':
    main()

output:

                   A         B         C         D         E
2017-08-01  1.075245 -0.605058  0.712755  2.418159 -0.028940
2017-08-02 -1.513320 -0.517082  1.363238  0.618522 -0.450400
2017-08-03 -2.267711 -2.235939  2.288919  2.608362 -1.181633
2017-08-04 -0.276085 -1.130215 -0.122823 -0.542475 -0.331884
2017-08-05 -0.231365 -0.488244  1.757364 -0.967584 -1.448575
2017-08-06  0.377513  0.051755  0.322172 -0.462239  0.823563
2017-08-07  1.009144 -0.670553  0.262810 -0.865274 -0.721550
2017-08-08 -0.257351  0.984785 -0.297281 -0.230398  0.697477
   A          B
0  9 2017-07-07
1  3 2017-07-08
2  3 2017-07-09
3  6 2017-07-10
4  6 2017-07-11
5  4 2017-07-12
6  5 2017-07-13
7  6 2017-07-14
                   A         B         C         D         E
2017-08-01  1.075245 -0.605058  0.712755  2.418159 -0.028940
2017-08-02 -1.513320 -0.517082  1.363238  0.618522 -0.450400
2017-08-03 -2.267711 -2.235939  2.288919  2.608362 -1.181633
                   A         B         C         D         E
2017-08-06  0.377513  0.051755  0.322172 -0.462239  0.823563
2017-08-07  1.009144 -0.670553  0.262810 -0.865274 -0.721550
2017-08-08 -0.257351  0.984785 -0.297281 -0.230398  0.697477
DatetimeIndex(['2017-08-01', '2017-08-02', '2017-08-03', '2017-08-04',
               '2017-08-05', '2017-08-06', '2017-08-07', '2017-08-08'],
              dtype='datetime64[ns]', freq='D')
[[ 1.07524464 -0.60505755  0.71275536  2.41815902 -0.02894002]
 [-1.51331977 -0.51708246  1.36323759  0.6185221  -0.45040032]
 [-2.26771071 -2.23593917  2.28891947  2.60836214 -1.1816333 ]
 [-0.27608484 -1.13021474 -0.12282251 -0.54247504 -0.33188383]
 [-0.23136532 -0.48824379  1.75736371 -0.96758439 -1.44857541]
 [ 0.37751303  0.05175454  0.32217176 -0.46223914  0.82356261]
 [ 1.00914409 -0.67055311  0.26280966 -0.86527427 -0.72155023]
 [-0.25735124  0.98478455 -0.29728085 -0.23039814  0.69747694]]
   2017-08-01  2017-08-02  2017-08-03  2017-08-04  2017-08-05  2017-08-06  \
A    1.075245   -1.513320   -2.267711   -0.276085   -0.231365    0.377513   
B   -0.605058   -0.517082   -2.235939   -1.130215   -0.488244    0.051755   
C    0.712755    1.363238    2.288919   -0.122823    1.757364    0.322172   
D    2.418159    0.618522    2.608362   -0.542475   -0.967584   -0.462239   
E   -0.028940   -0.450400   -1.181633   -0.331884   -1.448575    0.823563   

   2017-08-07  2017-08-08  
A    1.009144   -0.257351  
B   -0.670553    0.984785  
C    0.262810   -0.297281  
D   -0.865274   -0.230398  
E   -0.721550    0.697477  
                   A         B         C         D         E
2017-08-08 -0.257351  0.984785 -0.297281 -0.230398  0.697477
2017-08-04 -0.276085 -1.130215 -0.122823 -0.542475 -0.331884
2017-08-07  1.009144 -0.670553  0.262810 -0.865274 -0.721550
2017-08-06  0.377513  0.051755  0.322172 -0.462239  0.823563
2017-08-01  1.075245 -0.605058  0.712755  2.418159 -0.028940
2017-08-02 -1.513320 -0.517082  1.363238  0.618522 -0.450400
2017-08-05 -0.231365 -0.488244  1.757364 -0.967584 -1.448575
2017-08-03 -2.267711 -2.235939  2.288919  2.608362 -1.181633
                   E         D         C         B         A
2017-08-01 -0.028940  2.418159  0.712755 -0.605058  1.075245
2017-08-02 -0.450400  0.618522  1.363238 -0.517082 -1.513320
2017-08-03 -1.181633  2.608362  2.288919 -2.235939 -2.267711
2017-08-04 -0.331884 -0.542475 -0.122823 -1.130215 -0.276085
2017-08-05 -1.448575 -0.967584  1.757364 -0.488244 -0.231365
2017-08-06  0.823563 -0.462239  0.322172  0.051755  0.377513
2017-08-07 -0.721550 -0.865274  0.262810 -0.670553  1.009144
2017-08-08  0.697477 -0.230398 -0.297281  0.984785 -0.257351
              A         B         C         D         E
count  8.000000  8.000000  8.000000  8.000000  8.000000
mean  -0.260491 -0.576319  0.785894  0.322134 -0.330243
std    1.158991  0.919133  0.928070  1.436732  0.812523
min   -2.267711 -2.235939 -0.297281 -0.967584 -1.448575
25%   -0.585394 -0.785469  0.166402 -0.623175 -0.836571
50%   -0.244358 -0.561070  0.517464 -0.346319 -0.391142
75%    0.535421 -0.353244  1.461769  1.068431  0.152664
max    1.075245  0.984785  2.288919  2.608362  0.823563
2017-08-01    1.075245
2017-08-02   -1.513320
2017-08-03   -2.267711
2017-08-04   -0.276085
2017-08-05   -0.231365
2017-08-06    0.377513
2017-08-07    1.009144
2017-08-08   -0.257351
Freq: D, Name: A, dtype: float64
                   A         B         C         D         E
2017-08-01  1.075245 -0.605058  0.712755  2.418159 -0.028940
2017-08-02 -1.513320 -0.517082  1.363238  0.618522 -0.450400
2017-08-03 -2.267711 -2.235939  2.288919  2.608362 -1.181633
                   A         B         C         D         E
2017-08-01  1.075245 -0.605058  0.712755  2.418159 -0.028940
2017-08-02 -1.513320 -0.517082  1.363238  0.618522 -0.450400
2017-08-03 -2.267711 -2.235939  2.288919  2.608362 -1.181633
2017-08-04 -0.276085 -1.130215 -0.122823 -0.542475 -0.331884
2017-08-05 -0.231365 -0.488244  1.757364 -0.967584 -1.448575
2017-08-06  0.377513  0.051755  0.322172 -0.462239  0.823563
A    1.075245
B   -0.605058
C    0.712755
D    2.418159
E   -0.028940
Name: 2017-08-01 00:00:00, dtype: float64
                   B         D
2017-08-02 -0.517082  0.618522
2017-08-03 -2.235939  2.608362
2017-08-04 -1.130215 -0.542475
2017-08-05 -0.488244 -0.967584
2017-08-06  0.051755 -0.462239
0.71275536229
                   C         D
2017-08-02  1.363238  0.618522
2017-08-03  2.288919  2.608362
-0.45040032497
                   A         B         C         D         E
2017-08-06  0.377513  0.051755  0.322172 -0.462239  0.823563
2017-08-08 -0.257351  0.984785 -0.297281 -0.230398  0.697477
                   A         B         C         D         E
2017-08-01       NaN -0.605058       NaN       NaN -0.028940
2017-08-02 -1.513320 -0.517082       NaN       NaN -0.450400
2017-08-03 -2.267711 -2.235939       NaN       NaN -1.181633
2017-08-04 -0.276085 -1.130215 -0.122823 -0.542475 -0.331884
2017-08-05 -0.231365 -0.488244       NaN -0.967584 -1.448575
2017-08-06       NaN       NaN       NaN -0.462239       NaN
2017-08-07       NaN -0.670553       NaN -0.865274 -0.721550
2017-08-08 -0.257351       NaN -0.297281 -0.230398       NaN
Empty DataFrame
Columns: [A, B, C, D, E]
Index: []
2017-08-01    10
2017-08-02    11
2017-08-03    12
2017-08-04    13
2017-08-05    14
2017-08-06    15
2017-08-07    16
2017-08-08    17
Freq: D, dtype: int64
                   A         B         C         D         E   F
2017-08-01  1.075245 -0.605058  0.712755  2.418159 -0.028940  10
2017-08-02 -1.513320 -0.517082  1.363238  0.618522 -0.450400  11
2017-08-03 -2.267711 -2.235939  2.288919  2.608362 -1.181633  12
2017-08-04 -0.276085 -1.130215 -0.122823 -0.542475 -0.331884  13
2017-08-05 -0.231365 -0.488244  1.757364 -0.967584 -1.448575  14
2017-08-06  0.377513  0.051755  0.322172 -0.462239  0.823563  15
2017-08-07  1.009144 -0.670553  0.262810 -0.865274 -0.721550  16
2017-08-08 -0.257351  0.984785 -0.297281 -0.230398  0.697477  17
                   A         B         C         D         E   F
2017-08-01  0.000000 -0.605058  0.712755  2.418159 -0.028940  10
2017-08-02 -1.513320 -0.517082  1.363238  0.618522 -0.450400  11
2017-08-03 -2.267711 -2.235939  2.288919  2.608362 -1.181633  12
2017-08-04 -0.276085 -1.130215 -0.122823 -0.542475 -0.331884  13
2017-08-05 -0.231365 -0.488244  1.757364 -0.967584 -1.448575  14
2017-08-06  0.377513  0.051755  0.322172 -0.462239  0.823563  15
2017-08-07  1.009144 -0.670553  0.262810 -0.865274 -0.721550  16
2017-08-08 -0.257351  0.984785 -0.297281 -0.230398  0.697477  17
                   A         B         C  D           E   F
2017-08-01  0.000000 -0.605058  0.712755  4   -0.028940  10
2017-08-02 -1.513320 -0.517082  1.363238  4  666.000000  11
2017-08-03 -2.267711 -2.235939  2.288919  4   -1.181633  12
2017-08-04 -0.276085 -1.130215 -0.122823  4   -0.331884  13
2017-08-05 -0.231365 -0.488244  1.757364  4   -1.448575  14
2017-08-06  0.377513  0.051755  0.322172  4    0.823563  15
2017-08-07  1.009144 -0.670553  0.262810  4   -0.721550  16
2017-08-08 -0.257351  0.984785 -0.297281  4    0.697477  17
                   A         B         C  D           E   F
2017-08-01  0.000000  0.605058  0.712755  4    0.028940  10
2017-08-02  1.513320  0.517082  1.363238  4  666.000000  11
2017-08-03  2.267711  2.235939  2.288919  4    1.181633  12
2017-08-04  0.276085  1.130215  0.122823  4    0.331884  13
2017-08-05  0.231365  0.488244  1.757364  4    1.448575  14
2017-08-06  0.377513  0.051755  0.322172  4    0.823563  15
2017-08-07  1.009144  0.670553  0.262810  4    0.721550  16
2017-08-08  0.257351  0.984785  0.297281  4    0.697477  17

 

Matplotlib基本图形笔记

#encoding=utf-8
import matplotlib.pyplot as plt
import numpy as np



#散点图
fig=plt.figure()#画布
ax=fig.add_subplot(3,2,1)#3行3列第一个
n=128
X=np.random.normal(0,1,n)#生成随机数 正态分布 [numpy.random.normal(loc=0.0, scale=1.0, size=None)]  运行代码中 0->此概率分布的均值(对应着整个分布的中心centre) 1->此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高)n->输出的shape,默认为None,只输出一个值
Y=np.random.normal(0,1,n)
T=np.arctan2(X,Y)
#print X,Y,T
#plt.axes([0.025,0.025,0.95,0.95])#对画图区域设置 axes([x,y,xs,ys])#其中x代表在X轴的位置,y代表在Y轴的位置,xs代表在X轴上向右延展的范围大小,ys代表在Y轴中向上延展的范围大小
ax.scatter(X,Y,s=75,c=T,alpha=0.5)#绘制散点图size color alpha
plt.xlim(-1.5,1.5),plt.xticks([])#x轴范围 不显示坐标轴刻度
plt.ylim(-1.5,1.5),plt.yticks([])
plt.axis()#显示轴
plt.title("scatter")
plt.xlabel("x")
plt.ylabel("y")


#柱状图
ax=fig.add_subplot(322)
n=10
X=np.arange(n)
Y1=(1-X/float(n+1))
Y2=(1-X/float(n))
#print X,Y1,Y2
ax.bar(X,+Y1,facecolor="#9999FF",edgecolor="white")
ax.bar(X,-Y2,facecolor="#FF2222",edgecolor="white")
for x,y in zip(X,Y1):
    plt.text(x+0.1,+y+0.05,"%.2f"%y,ha="center",va="bottom",rotation="45")#bottom是柱状图相对于所标数字的位置
for x,y in zip(X,Y2):
    plt.text(x+0.1,-y-0.05,"%.2f"%y,ha="center",va="top")
plt.title("bar")
plt.yticks([])
plt.xticks([])



#饼图
ax=fig.add_subplot(323)
n=20
Z=np.ones(n)
Z[-1]*=2
ax.pie(Z,explode=Z*0.05,colors=["%f"%(i/float(n)) for i in range(n)],labels=["%.2f"%(i/float(n)) for i in range(n)])
plt.gca().set_aspect("equal")
plt.xticks([])
plt.yticks([])
plt.title("pie")


#极坐标图
fig.add_subplot(324,polar=True)
n=20
t=np.arange(0.0,2*np.pi,2*np.pi/n)
r=10*np.random.rand(n)
plt.polar(t,r)
plt.title("polar")



#3D
from mpl_toolkits.mplot3d import Axes3D
fig.add_subplot(313,projection="3d")
plt.plot([1,3,5,6,7,9],[4,2,2,1,2,3],[6,8,8,7,8,2],linestyle="-.")
plt.title("3D")



#plt.savefig("./fig.png")#保存
plt.tight_layout(pad=0.4, w_pad=0.5, h_pad=1.0)#参数图像边界和子图之间的额外边距。边距以字体大小单位规定。
plt.show()

 

matplotlib基本绘图笔记

matplotlib基本绘图笔记,跟我一起来绘制一个丑陋的三角函数图吧!

 

#encoding=utf-8

import numpy as np
import matplotlib.pyplot as plt


#基本绘图设置
x=np.linspace(-np.pi,np.pi,256,endpoint=True)#2560个点 是否包含最后一个点
c,s=np.cos(x),np.sin(x)
plt.figure(1)#指定绘制图像1
plt.plot(x,c,color="blue",linewidth=1.5,linestyle="-",label="cos",alpha=0.5)#绘制 (自变量,因变量,颜色,宽度,线形,标签,透明度)
plt.plot(x,s,"r*",label="sin")#"r->红色 *->线形"
plt.title("testruilin cos sin")#标题


#设置轴
ax=plt.gca()#轴的编辑器
ax.spines["right"].set_color("none")#隐藏右面的轴
ax.spines["top"].set_color("none")
ax.spines["left"].set_position(("data",0))#把左面的轴移到数据为0的位置
ax.spines["bottom"].set_position(("data",0))


#轴旁边的数字相关设置
ax.xaxis.set_ticks_position("bottom")#把x轴数字放到x轴下方
ax.yaxis.set_ticks_position("left")
plt.yticks(np.linspace(-1,1,5,endpoint=True))#-1到1标5个点
plt.xlim(-5,5)#范围
for label in ax.get_xticklabels()+ax.get_yticklabels():#字体相关设置
    label.set_fontsize(18)
    label.set_bbox(dict(facecolor="white",edgecolor="black",alpha=0.3))


#其他
plt.grid()#网格线
plt.legend(loc="upper left")#图例位置
#plt.axis([-1,2,0.5,1])#显示范围
plt.fill_between(x,np.abs(x)<0.8,c,c>0.1,color="green",alpha=0.4)#填充效果 横坐标绝对值小于0.8为真即1 从y=1开始往下填充 大于0.8即为0 从0往上填充 这是纵向范围 ,横向范围由c定义范围决定,这里如图是纵坐标为0.1以上的横向距离符合,最后填充符合横向距离与纵向距离的范围的交集


#注释
t=1
plt.plot([t,t],[0,np.cos(t)],"y",linewidth=2.2,linestyle="--")#绘制一条线 两点分别为t,0 t,cos(t)的连线 虚线
plt.annotate("cos(1)",xy=(t,np.cos(t)),xycoords="data",xytext=(+10,+30),textcoords="offset points",arrowprops=dict(arrowstyle="->",connectionstyle="arc3,rad=0.3"))
#注释    基本位置  coords是坐标的意思 xytext=(+10,+30),textcoords="offset points"控制偏移量并设置为相对偏移 arrowprops设置箭头工具 类型 弧度



plt.show()#展示

 

numpy常用操作笔记

#encoding=utf-8
import numpy as np

lst=[[1,2,3],[6,7,8]]
print (type(lst))
np_lst=np.array(lst)
print (type(np_lst))
np_lst=np.array(lst,dtype=np.float)
print np_lst
print (np_lst.shape)#几行几列
print (np_lst.ndim)#维度
print (np_lst.dtype)#类型
print (np_lst.itemsize)#所占字节
print (np_lst.size)#大小

print (np.zeros([2,4]))#定义数组
print (np.ones([3,2]))
print (np.random.rand())#随机数
print (np.random.rand(2,4))
print (np.random.randint(1,10,3))#生成1-10随机的三个整数
print (np.random.choice([1,2,3,5,10,100,666]))#选择指定数字
print (np.random.beta(1,10,100))#beta分布

print (np.arange(1,11).reshape([2,-1]))#生成1-10的等差数列并显示为2行5列

list=np.array([[[1,2,3],
               [4,5,6]],
              [[7,8,9],
               [10,11,12]]
              ])
print (list.sum(axis=0))#axis指定一个维度求和 axis越大越深入 =0对最外层求和 1+7 2+8 3+9 4+10 5+11 6+12
print (list.sum(axis=1))#内层求和 1+4 2+5 3+6 7+10 8+11 9+12
print (list.sum(axis=2))#再深入一层 1+2+3 4+5+6 7+8+9 10+11+12
print (list.max(axis=1))#求最大值
print (list.min(axis=2))#求最小值

lst1=np.array([1,2,3])
lst2=np.array([10,11,12])
print (np.concatenate((lst1,lst2),axis=0))#追加到一起
print (np.vstack((lst1,lst2)))#上下追加到一起 两行
print (np.hstack((lst1,lst2)))#合在一起
print (np.split(lst1,3))#分成3组

output:

<type 'list'>
<type 'numpy.ndarray'>
[[ 1.  2.  3.]
 [ 6.  7.  8.]]
(2, 3)
2
float64
8
6
[[ 0.  0.  0.  0.]
 [ 0.  0.  0.  0.]]
[[ 1.  1.]
 [ 1.  1.]
 [ 1.  1.]]
0.0790300286594
[[ 0.40570725  0.40072322  0.75697423  0.45873189]
 [ 0.84684053  0.80063956  0.02231413  0.57768334]]
[4 5 8]
10
[  1.98939407e-02   1.61285413e-02   1.18716706e-02   8.10961771e-02
   1.63533368e-01   1.44668421e-01   5.11693434e-02   6.59941834e-02
   2.23286959e-02   2.15972016e-01   8.63734013e-02   8.06557908e-02
   1.22880147e-01   1.09686347e-02   6.54980124e-02   1.98280109e-03
   4.08960959e-05   4.99724974e-02   4.46814021e-02   1.38706779e-01
   1.24582838e-01   5.32977093e-02   1.01838024e-01   2.46115301e-01
   6.15260218e-03   1.08537025e-01   1.69927681e-02   1.03185373e-01
   2.02785750e-02   4.68360049e-02   2.35353598e-02   1.53166093e-01
   7.08847154e-02   1.43549143e-02   9.55657510e-02   7.62737256e-02
   5.94670869e-03   5.71465328e-03   3.98867568e-02   6.37016822e-02
   9.69537649e-02   3.52414465e-02   5.60588196e-03   1.45640846e-01
   3.06005428e-02   7.66577878e-02   1.98901419e-02   1.04611224e-01
   1.45486287e-02   4.63747783e-03   1.00559794e-01   4.14864166e-02
   6.97617286e-02   1.21598675e-02   5.18675502e-02   2.67329995e-01
   2.71693357e-01   7.61304550e-02   7.19672528e-02   6.30126936e-03
   3.79026503e-02   2.35909430e-01   5.86051618e-02   2.11428839e-01
   1.35133707e-01   6.62907241e-02   1.38296699e-01   2.88886522e-01
   2.40987292e-02   1.76062934e-02   1.90230382e-01   2.09219429e-01
   3.40778112e-02   4.66014797e-02   5.47428038e-03   2.20511410e-02
   3.19067152e-02   2.47324231e-02   3.66452719e-02   2.97249683e-02
   2.26196050e-01   1.59556704e-02   5.66573658e-04   1.44624707e-01
   8.91173413e-02   4.21186597e-02   3.77105859e-03   2.68561111e-01
   1.88337068e-02   1.12529504e-01   1.14325549e-01   6.22131659e-04
   4.74532828e-01   1.57684391e-01   2.60435883e-02   1.53169399e-03
   2.44662204e-02   2.86626061e-02   1.47198619e-01   4.32705246e-02]
[[ 1  2  3  4  5]
 [ 6  7  8  9 10]]
[[ 8 10 12]
 [14 16 18]]
[[ 5  7  9]
 [17 19 21]]
[[ 6 15]
 [24 33]]
[[ 4  5  6]
 [10 11 12]]
[[ 1  4]
 [ 7 10]]
[ 1  2  3 10 11 12]
[[ 1  2  3]
 [10 11 12]]
[ 1  2  3 10 11 12]
[array([1]), array([2]), array([3])]