python学习—Numpy包

原创 2016年05月31日 15:01:30

教程为《利用python进行数据分析》,本人已进行基本入门学习,利用此处书对Numpy包及pandans包学习。


Numpy包

 

一、概念:

ndarray N维数组对象,多维数据容器,所元素必须同类型,包含:

1、 shape: 一个表示各位维度大小的元组(描述从外向里,见后面栗子);

2、 dtype:一个明确数据类型的对象

 

二、创建ndarray数组

>>import numpy as np    #np是惯用名

>>data = [[1,2,3,4],[2,3,4,5]]

>>array = np.array(data)

>>array 

array([[1, 2, 3, 4], [2, 3, 4]], dtype=object)    #含array标志的numpy数组

>>array.shape

(2L,4L)          #最外是两个维度,每个维度里又有四个维度

>>array.dtype

dytpe('int64')


zeros 和ones

>>np.zeros((2,3))    #双括号表示数字必须zeros的第一参数

array([0.,0.,0.],

    [0.,0.,0.,])

同理ones创建全为1的数字;np.empty 创建没有任何具体数字的数组


三、ndarray的数据类型

int8 :有符号的8位整型

folat64 :  标准的双精度浮点数,32则为单精度


astype数据类型转换:

>> folat_array = array.astype(np.folat64)

>>folat_array.dtypr

dtype('folat64')


四、数组和标量运算

大小相等的数字之间任何运算会应用到元素级;(栗子略)


五、基本索引和切片

>>arr = np.arange(10)  

>>arr[5]

5

>>arr[5:8]

array([5,6,7])

>>arr[5:8]=10

>>arr

arr([1,2,3,4,10,10,10,8,9])   #替换索引的值


对于高维数组,索引由外向内(此处结合shape理解会比较清晰)

>>data = [[1,2,3,4],[2,3,4,5]]

>>array = np.array(data)

>>array[0]

array([1,2,3,4])

>>array[1][3]   #务必区别于 array[[1,3]],后者为花式索引

5

>>array[1,3]   #括号内的数字个数须小于数组的维数

5


切片索引

原理同索引,array[:2]  


布尔型索引

要true,不要false

>>data = [[1,2,3,4],[2,3,4,5]]

>>data[([T]RUE,FALSE)]  #布尔型数组的长度必须和被索引的轴长度(最外的维度)一致

 array([1,2,3,4])


花式索引

利用整数数组进行索引

>> array[[2,3]]  #取array第3、4位数组


六、数组转置和轴转换

>>array.T  #实现转置


七、通用函数

应用至元素级

>>arr = np.arange(5)

>>np.sqrt (arr)    # 利用numpy包中的ufunc,区别于math.sqrt

array([0,1,1.414,1,73,2])


八、利用数组进行数据处理(矢量化数组运算,重要)

矢量化数组运算是numpy包最大优势,比纯python方式简单、并且快;(学过R的知道R语言就是这种方法)


将条件逻辑表述为数组运算

>>xarr = np.array([1.1,1.2,1.3,1.4,1.5])

>>yarr = np.array([2.1,2.2,2.3,2.4,2.5])

>>cond = np.array

cond = np.array([True,False,True,True,False])

根据cond值选取,T选x,F选y

>>result = [(x if c else y)

       for x,y,c in zip(xarr,yarr,cond)]

[1.1000000000000001, 2.2000000000000002, 1.3, 1.3999999999999999, 2.5]


利用np.where提高速度(记住这个用法)

>>result = np.where(cond,xarr,yarr)  #第一个参数为布尔条件,第二个位条件为T执行,第三个条件为F执行

[ 1.1  2.2  1.3  1.4  2.5]

其他栗子:

两组布尔值cond1,cond2,根据4种不同的布尔组合赋予不同的值

np.where(cond1 & cond2,0,np.where(cond1,1,np.where(cond2,2,3)))


数学和统计方法

>>arr = np.random.randn(5,4)   #生成正态分布的数据

>>arr.mean()

0.062814911084854597


>>arr.mean(axis=1)  #接受一个axis参数,1为行,0为列

array([-1.2833,0.2844,0.6574,0.6745,-0.0187])


用于布尔型数组的方法

>>arr = randn(100)

>>(arr >0 ).sum()  #正值的数量,布尔条件放在“函数”前面

44


排序

>>arr.sort(1)  #括号内简略了axis=1,按行排序


唯一花以及其他的集合逻辑

>>np.unique(arr)   #返回唯一元素的

>>a = [[1,1,5],[7,2,2]]
>>b = np.array(a)
>>np.unique(b)

array([1, 2, 5, 7])   #返回一维的数组


九、用于数组的文件输入输出

np.save和np.load 两个函数

 >>arr = np,arange(10)

>>np.save('some_array',arr)  #参数为文件名加变量名


>>np.load('some_arry.npy')  #参数为文件名


十、线性代数

满足矩阵运算要求的两数组可以直接运算











机器学习实战python环境搭建以及numpy和matplotlib安装遇到的各种问题(一)

第一次在大神云集的CSDN写博客,以前都是在新浪上随便写一写,当作平时的遇到的一些问题的总结。 自己从这里学到了很多知识,也解决了很多问题。 自学的时候会遇到很多问题,由于没有时间系统的学习知识,...
  • XD_Senior
  • XD_Senior
  • 2015年11月18日 13:42
  • 1330

Python机器学习(一)--Numpy基础

2 NumPy-快速处理数据 标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针。这样为了保存一个简单的...
  • alvine008
  • alvine008
  • 2014年06月30日 13:03
  • 10488

python科学计算包numpy使用心得

整理了python科学计算包numpy、scipy和pandas的基本使用技巧
  • cskchenshengkun
  • cskchenshengkun
  • 2015年05月17日 17:18
  • 5425

python依赖包numpy、scipy、scikit-learn运行冲突解决方案

在运行python的decision tree时,由于.py文件开头引入了sklearn包(见下表),导致运行错误。 import numpy as np import scipy as sp fr...
  • qq_23617681
  • qq_23617681
  • 2016年04月01日 17:14
  • 1897

机器学习之Python安装和numpy配置

最近,开始学习斯坦福大学,吴恩达老师的机器学习课程。感觉很有意思,想深入的学一学,无奈,我还只是一个小白。查了查网上的一些资料,准备从视频加机器学习实战入手,从视频中看懂算法的推导。实践中使用Pyth...
  • caobcn
  • caobcn
  • 2015年11月20日 17:14
  • 1640

window环境下python安装numpy、scipy、matplotlib等科学计算包

python安装 首先我们下载对应PC位数的python。64位就下载64的,32就对应32的,防止以后莫名其妙的出错。 下载地址:https://www.python.org/getit/,我安装的...
  • u013355826
  • u013355826
  • 2017年06月24日 16:53
  • 420

Python--第3天:一大波金融Library来袭之numpy篇

来源:https://uqer.io/community/share/54ca15f9f9f06c276f651a56 ###接下来要给大家介绍的系列中包含了Python在量化金融中运用最广泛的几个...
  • qq_34941023
  • qq_34941023
  • 2016年09月25日 23:39
  • 648

Python数据分析之numpy学习(一)

Python是一门不错的动态语言,其应用的领域非常广泛,如web开发、Linux运维、数据挖掘、机器学习、爬虫、推荐系统等。在学完《廖雪峰Python2.7教程》感觉受益匪浅,掌握了基本的语法之后开始...
  • xx5595480
  • xx5595480
  • 2017年03月22日 21:27
  • 787

Python中的NumPy函数库

NumPy函数库是python中一个重要的数值计算数据库,在用python实现一些机器学习算法的时候,也经常用到NumPy函数库。 NumPy函数库中存在两种不同的数据类型(矩阵matrix和数组a...
  • puqutogether
  • puqutogether
  • 2014年09月27日 17:23
  • 2940

Python 中的range,以及numpy包中的arange函数

Python 中的range,以及numpy包中的arange函数 range()函数 函数说明: range(start, stop[, step]) -> range object,根据start...
  • weixin_37226516
  • weixin_37226516
  • 2017年03月08日 20:46
  • 3895
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python学习—Numpy包
举报原因:
原因补充:

(最多只允许输入30个字)