环境:python3.5
推荐两本书:《线性代数》、《利用python进行数据分析》
需要的库:
matplotlib快速绘图
scipy
numpy
对于大部分数据分析应用而言,最常用我最关注的功能集中在:
用于数据整理和清理、子集构造和过滤、转换等快速的矢量化数组运算。
常用的数组算法,如排序、唯一化、集合运算等。
高效的描述统计和数据聚合/摘要运算。
用于异构数据集的合并/链接运算的数据对齐和关系型数据运算。
将条件逻辑表述为数组表达式(而不是带有if-elif-else分支的循环)。
数据的分组运算(聚合、转换、函数应用等)。
Numpy则提供了上述功能的计算基础。
Numpy对象是数组,称为ndarray
维度(dimensions)称作轴(axes),轴的个数叫做秩(rank)。注:有几级中括号就有几个维度
>>> from numpy import *
>>> a = arange(15).reshape(3, 5)
>>> a
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
>>> a.shape
(3, 5)
>>> a.ndim
2
>>> a.dtype.name
'int32'
>>> a.itemsize
4
>>> a.size
15
>>> type(a)
numpy.ndarray
>>> b = array([6, 7, 8])
>>> b
array([6, 7, 8])
>>> type(b)
numpy.ndarray
array
asarray将输入转换成ndarray
arange
ones
zeros
empty 只分配内存空间不填充任何值
eye 创建N*N单位矩阵(对角线为1)
numpy数组的一个特点,不用编写循环就可对数据执行批量运算,这通常称作矢量化(vectorization)。
读者可以尝试以下代码:
arr=np.array([[1,2,3],[4,5,6]])
print(arr)
print(arr-arr)
print(arr**2)
print(1/arr)
print(arr**0.5)
numpy数组的索引是一个内容丰富的主题,因为选取数据子集或单个元素的方式有很多。这里我仅详细介绍常用的方法,对于高级功能的方式我列举名称,读者可以等到要用的时候自行查阅资料。
#一维
>>>arr=np.arange(10)
>>>arr[5]
>>>arr[5:8]#自行尝试
>>>arr_slice=arr[5:8]
>>>arr_slice[1]=12345
>>>arr
[0,1,2,3,4,12345,6,7,8,9]
#想想如果Numpy坚持要将数据复制来复制区的话会产生何等的性能和内存问题!
#注意视图和拷贝的区别。
http://blog.csdn.net/a5186050/article/details/78002412
#注意理解“broadcasting”一词,这和Numpy的设计初衷——处理大数据有关。
#多维
>>>arr2d=np.array([[1,2,3],[4,5,6],[7,8,9]])
>>>arr2d[2]
>>>arr2d[0][2]
#切片——常用!
#伪定义
arrnd=np.array(...)
#伪代码,元素索引
arrnd[m][n][p]...==arrnd[m,n,p,...]
#同理伪代码,切片索引——特别有用
arrnd[m:n][:][p:q]...==arrnd[m:n,:,[p:q],...]
#常用方式
arrays[:,1]
arrays[::-1]
#理解[::-1]:https://www.zhihu.com/question/28600108/answer/41420669
#布尔型索引
#花式索引
#要用的时候读者在自行查阅资料,我觉得效果会更好
#一元function
a=np.array(...)
a.T #转置
np.sqrt(a)
np.exp(a)
np.ceil(a)
np.sin(a)
np.log(a)
#二元function
b=np.array(...)
np.max(a,b)
np.add(a,b)
Python Numpy进阶
http://blog.csdn.net/a5186050/article/details/78069628
如果您看到这篇文章有收获或者有不同的意见,欢迎点赞或者评论。
python群:190341254
丁。