1.开发环境搭建
1.1 采用的是ipython +notebook编辑器,下载地址为http://www.enthought.com 的EPDFree安装包,windows中最好下载32位版本1.2 pandas 对应的应该在 http://pipy.python.org/pypi/pandas下载合适的二进制包
1.3 命令行中 $ ipython notebook --pylab=inline 检查 notebook 是否安装成功,安装成功后,输入命令后会自动在浏览器中打开编辑界面:
2.Numpy 介绍
2.1 Numpy 是一个高性能的数据分析基础包,它的一个特点是其N维的数组对象(ndarray),它是一个通用的同构数据容器,其中所有元素必须是相同类型,每个数组都有一个shape (各维度大小的元组),和一个dtype(说明数组类型的对象)
mydata.shape
(15,)
mydata.dtype
dtype('int32')
2.2 ndarray的创建
调用np 库中的array 、asarray、arange、eye等等函数可以将输入数据转换成ndarray
mydata2 = np.array([[1,2,3],[3,4,5]])
mydata2
array([[1, 2, 3],
[3, 4, 5]])
mydata2.dtype
dtype('int32')
#将mydata2的数据类型转换出float64 更多类型参考P86 表4-2
array_f = mydata2.astype(np.float64)
array_f.dtype
dtype('float64')
2.3 数组的运算
#数组和标量的运算
In [13]:mydata2*3
Out[13]:
array([[ 3, 6, 9],
[ 9, 12, 15]])
2.4 索引和切片
array2d = np.array([[1,2,3],[4,5,6],[7,8,9]])
# :2 :取出二维数组中第一维中的下标为0,个数为2的元素
# 1: : 取出二维数组中第二维中下标为1开始到最末尾的元素
array_cut = array2d[:2,1:]
array_cut
Out[15]:
array([[2, 3],
[5, 6]])
2.5数组的转置和轴对换
#装置是将数据进行重塑,他返回的是源数据视图,简单的装置可以使用.T (进行轴对换 )
array3 = np.arange(15).reshape((3,5))
array3
Out[17]:
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
In [18]:
array3.T
Out[18]:
array([[ 0, 5, 10],
[ 1, 6, 11],
[ 2, 7, 12],
[ 3, 8, 13],
[ 4, 9, 14]])
2.6通用函数:元素级数组函数
通用函数ufunc 是一种对ndarray 中的数据执行元素级运算的函数,
一元ufunc举例:ads (计算各元素绝对值) 、sqrt(平方根)、exp(计算个元素的指数e^x)......
二元ufunc: add(计算两数组中对应的元素和) subtract(从第一个数组中减去第二个数组中的元素).....
array4 = np.arange(10)
array_sqrt = np.exp(array4)
array_sqrt
Out[22]:
array([ 1.00000000e+00, 2.71828183e+00, 7.38905610e+00,
2.00855369e+01, 5.45981500e+01, 1.48413159e+02,
4.03428793e+02, 1.09663316e+03, 2.98095799e+03,
8.10308393e+03])
2.7排序
Numpy可以使用sort方法进行就地排序
array = np.random.randn(8)
array
Out[8]:
array([ 0.02808422, -0.78669214, -0.03038576, -0.0841979 , -0.44913758,
1.13105672, 1.6344209 , 1.95355504])
array.sort()
In [10]:
array
Out[10]:
array([-0.78669214, -0.44913758, -0.0841979 , -0.03038576, 0.02808422,
1.13105672, 1.6344209 , 1.95355504])
2.8 Numpy用于文件输入输出
np.save 和np.load 是读写磁盘数组数据的主要函数,保存格式默认为.npy
#将数组以二进制格式保存到磁盘
array = np.random.randn(8)
array
Out[8]:
array([ 0.02808422, -0.78669214, -0.03038576, -0.0841979 , -0.44913758,
1.13105672, 1.6344209 , 1.95355504])
array.sort()
array
Out[10]:
#得到一个排序后的数组
array([-0.78669214, -0.44913758, -0.0841979 , -0.03038576, 0.02808422,
1.13105672, 1.6344209 , 1.95355504])
#保存数组到D:/python2.7/workspace/Numpy_test/20170427/路劲下,并命名为some_array.npy
np.save("D:/python2.7/workspace/Numpy_test/20170427/some_array",array)
#取出路劲下的npy文件的内容,转化为ndarray 数组
get_array = np.load("D:/python2.7/workspace/Numpy_test/20170427/some_array.npy")
get_array
Out[13]:
array([-0.78669214, -0.44913758, -0.0841979 , -0.03038576, 0.02808422,
1.13105672, 1.6344209 , 1.95355504])
文件的存取
#将数组 get_array 以txt文本的格式保存到路劲下的文件中
np.savetxt("D:/python2.7/workspace/Numpy_test/20170427/array_test.txt",get_array)
In [15]:
new_array = np.loadtxt("D:/python2.7/workspace/Numpy_test/20170427/array_test.txt")
new_array
Out[15]:
array([-0.78669214, -0.44913758, -0.0841979 , -0.03038576, 0.02808422,
1.13105672, 1.6344209 , 1.95355504])
总结:
Numpy没有提供那么多高级的数据分析功能,它主要的功能集中在以下几点:
· 将数据转化为一个矢量数组来进行快速的数据整理、清理、子集构造、转换等运算
· 可以使用数学函数、线性代数、随机数等 进行数组运算、集合运算、描述统计和数据聚合运算来处理数据
· 可以用于读写磁盘数据及操作内存映射文件
· Numpy提供了简单易用的C API 很容易将数据传递给低级语言(C、C++等),适用性很好