由于刚开始接触python的数据分析,第二章引言和第三章IPython就先略读了下,对能做的事和开发环境有了个大致的认识,但针对其中提到的一些优势还有没体会,回头再重新看。今天直接学习python数据分析中重要的库之一:Numpy(numerical python)
看看它在pypi上的说明(理解不一定准确,希望有大神能够指点,还需要多刷文档):
NumPy: array processing for numbers, strings, records, and objects.
NumPy is a general-purpose array-processing package designed to efficientlymanipulate large multi-dimensional arrays of arbitrary records withoutsacrificing too much speed for small multi-dimensional arrays. NumPy is built on the Numeric code base and adds features introduced by numarray as well as an extended C-API and the ability to create arrays of arbitrary type which also makes NumPy suitable for interfacing with general-purpose data-base applications.
There are also basic facilities for discrete fourier transform, basic linear algebra and random number generation.
1. 这里来看是以数组的形式处理数、字符串、记录、对象。
2. 它能够高效的处理大数量级的多维的数组
3. 引入C-API,适配低级语言的外部库
4. 能够进行傅里叶变换、线性代数、随机数生成
学习中Numpy使用之前均需要引入库:import numpy as np,一般不要用引入库里面所有的东西的方式 from numpy import *,太费。
先来看看ndarray(多维数组对象):
1. 这个东西是什么?我理解这个东西就是一个盒子,这个盒子可以装数、字符串等东西,但是每个盒子只能装一种特定类型(也就是同构)的东西。这个盒子有两个重要的属性一个是大小形状(shape)一个是类型(dtype)。
2. 怎么在python中创建这个东西?答案是array()函数了:
array 函数:接收序列--->变成数组
>>> import numpy as np
>>> data1=[1,2,3,4,5]
>>> array1=np.array(data1)
>>> array1
array([1, 2, 3, 4, 5])
>>> data2=[[1,2,3,4,5],[6,7,8,9,10]]
>>> array2=np.array(data2)
>>> array2
array([[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10]])
两个属性:shape 和 dtype,聪明的array在你没有定义的时候会根据所传入的序列类型自动分配,当然也可以在创建的时候显示的定义dtype。例如arr=np.array([1,2,3],dtype=np.float64
怎么改变这两个属性呢?对shape来说:一是给shape属性赋值,通过赋值方式改变shape只是改变了轴的大小,不改变内存地址。二是通过reshape函数创建一个新尺寸的数组,引用同一段内存地址。也就是说改变大小调整后数组的值会影响原值。同样的可以使用属性直接赋值和astype()函数改变类型:
>>> array1.shape
(5,)
>>> arra