Numpy快速入门

Python Numpy快速入门

环境:python3.5

推荐两本书:《线性代数》、《利用python进行数据分析》

需要的库:

  • matplotlib快速绘图

  • scipy

  • numpy

对于大部分数据分析应用而言,最常用我最关注的功能集中在:

  1. 用于数据整理和清理、子集构造和过滤、转换等快速的矢量化数组运算。

  2. 常用的数组算法,如排序、唯一化、集合运算等。

  3. 高效的描述统计和数据聚合/摘要运算。

  4. 用于异构数据集的合并/链接运算的数据对齐和关系型数据运算。

  5. 将条件逻辑表述为数组表达式(而不是带有if-elif-else分支的循环)。

  6. 数据的分组运算(聚合、转换、函数应用等)。

Numpy则提供了上述功能的计算基础。

基础篇

Numpy对象是数组,称为ndarray
维度(dimensions)称作轴(axes),轴的个数叫做秩(rank)。注:有几级中括号就有几个维度

一、ndarray.attrs:

  • ndarray.ndim 秩
  • ndarray.shape 例如一个2排3列的矩阵,它的shape属性是(2,3)
  • ndarray.size 数组元素的总个数
  • ndarray.dtype 元素类型,NumPy提供自己的数据类型
  • ndarray.itemsize 数组中每个元素的字节大小

例:

>>> 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
丁。

你可能感兴趣的:(python杂记,Python与数据分析)