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 标准库一览(Python进阶学习)

写这个的起因是,还是因为在做Python challenge的时候,有的时候想解决问题,连应该用哪个类库都不知道,还要去百度(我不信就我一个人那么尴尬TvT) 好像自从学习了基础的Python 语法...
  • Jurbo
  • Jurbo
  • 2016年08月27日 11:28
  • 15167

python学习--windows下安装Numpy包的错误:Unable to find vcvarsall.bat

今天在安装numpy包的时候,无论是通过pip install numpy 还是上网下载numpy包后安装都是出现问题:error: Unable to find vcvarsall.bat,于是百度...
  • lc013
  • lc013
  • 2015年08月18日 19:35
  • 331

python机器学习包 Windows下 pip安装 scikit-learn numpy scipy

python机器学习包 Windows10下 pip安装 scikit-learn numpy scipy requirements: ` windows10 ` python2.7 ` pip9.0...

linux下python的机器学习包scikit-learn(包含numpy、scipy等)安装

scikit-learn是python的机器学习包,sci是science的缩写,kit为工具包的意思,实现了常用的机器学习算法。由于依赖许多其他的包,因此安装起来比较麻烦,笔者在十一的最后两天花费了...

深度学习Dya1-初识Python(Python环境搭建及numpy、matplotlib包安装)

简述: 最近在学习人工智能,老师推荐了一个有关神经网络学习的网站神经网络教程,里面的代码使用Python实现,因此简单学习了一下Python。 一、Python环境搭建(Windows) 1、首先在官...

Python科学计算包NumPy

Python科学计算包NumPy在机器学习过程中设计很多线性代数知识,因此会经常使用NumPy函数库。Numpy可以在不同的数据点上执行矩阵形式的数学运算而不需要复杂的循环操作。对于初学者,在安装py...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python学习—Numpy包
举报原因:
原因补充:

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