Python数据分析之Numpy学习 2 —— NumPy 基础学习
NumPy(Numerical Python)是高性能科学计算和数据分析的基础包。NumPy的主要对象是同构数据多维容器(homogeneous multidimensional array)——ndarray,也就是说每一个ndarray都是一个相同类型元素组成的表格(二维)。在NumPy中维度(dimensions)叫做轴(axes),轴的个数叫做秩(rank)。轴这个概念必须牢记,否则放弃吧。首先轴是从0开始计的,0代表最高维,次高维是1,以此类推。
官方NumPy参考手册 https://docs.scipy.org/doc/numpy/reference/
约定:
import numpy as np
ndarray对象的常用属性
创建ndarray
示例 array
numpy.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)import numpy as npa = np.array([1,2,3]) print a
输出如下:
[1, 2, 3]# 多于一个维度 import numpy as npa = np.array([[1, 2], [3, 4]]) print a
输出如下:
[[1, 2][3, 4]]# dtype 参数 import numpy as npa = np.array([1, 2, 3], dtype = complex) print a
输出如下:
[ 1.+0.j, 2.+0.j, 3.+0.j]
索引,切片和迭代
一维数组可以被索引、切片和迭代,就像列表和其它Python序列。
>>> a = arange(10)**3>>> aarray([ 0, 1, 8, 27, 64, 125, 216, 343, 512, 729])>>> a[2]8>>> a[2:5]array([ 8, 27, 64])>>> a[:6:2] = -1000 # equivalent to a[0:6:2] = -1000; from start to position 6, exclusive, set every 2nd element to -1000>>> aarray([-1000, 1, -1000, 27, -1000, 125, 216, 343, 512, 729])>>> a[ : :-1] # reversed aarray([ 729, 512, 343, 216, 125, -1000, 27, -1000, 1, -1000])>>> for i in a:... print i**(1/3.),...nan 1.0 nan 3.0 nan 5.0 6.0 7.0 8.0 9.0
多维数组可以每个轴有一个索引。这些索引由一个逗号分割的元组给出。
>>> def f(x,y):... return 10*x+y...>>> b = fromfunction(f,(5,4),dtype=int)>>> barray([[ 0, 1, 2, 3], [10, 11, 12, 13], [20, 21, 22, 23], [30, 31, 32, 33], [40, 41, 42, 43]])>>> b[2,3]23>>> b[0:5, 1] # each row in the second column of barray([ 1, 11, 21, 31, 41])>>> b[ : ,1] # equivalent to the previous examplearray([ 1, 11, 21, 31, 41])>>> b[1:3, : ] # each column in the second and third row of barray([[10, 11, 12, 13], [20, 21, 22, 23]])
组合(stack)不同的数组
几种方法可以沿不同轴将数组堆叠在一起:
>>> a = floor(10*random.random((2,2)))>>> aarray([[ 1., 1.], [ 5., 8.]])>>> b = floor(10*random.random((2,2)))>>> barray([[ 3., 3.], [ 6., 0.]])>>> vstack((a,b))array([[ 1., 1.], [ 5., 8.], [ 3., 3.], [ 6., 0.]])>>> hstack((a,b))array([[ 1., 1., 3., 3.], [ 5., 8., 6., 0.]])
函数
column_stack
以列将一维数组合成二维数组,它等同与
vstack
对一维数组。
>>> column_stack((a,b)) # With 2D arraysarray([[ 1., 1., 3., 3.], [ 5., 8., 6., 0.]])>>> a=array([4.,2.])>>> b=array([2.,8.])>>> a[:,newaxis] # This allows to have a 2D columns vectorarray([[ 4.], [ 2.]])>>> column_stack((a[:,newaxis],b[:,newaxis]))array([[ 4., 2.], [ 2., 8.]])>>> vstack((a[:,newaxis],b[:,newaxis])) # The behavior of vstack is differentarray([[ 4.], [ 2.], [ 2.], [ 8.]])
row_stack
函数,另一方面,将一维数组以行组合成二维数组。
对那些维度比二维更高的数组,
hstack
沿着第二个轴组合,
vstack
沿着第一个轴组合,
concatenate
允许可选参数给出组合时沿着的轴。
函数和方法(method)总览
这是个NumPy函数和方法分类排列目录。这些名字链接到NumPy示例,你可以看到这些函数起作用。[^5]
创建数组
arange, array, copy, empty, empty_like, eye, fromfile, fromfunction, identity, linspace, logspace, mgrid, ogrid, ones, ones_like, r , zeros, zeros_like
转化
astype, atleast 1d, atleast 2d, atleast 3d, mat
操作
array split, column stack, concatenate, diagonal, dsplit, dstack, hsplit, hstack, item, newaxis, ravel, repeat, reshape, resize, squeeze, swapaxes, take, transpose, vsplit, vstack
询问
all, any, nonzero, where
排序
argmax, argmin, argsort, max, min, ptp, searchsorted, sort
运算
choose, compress, cumprod, cumsum, inner, fill, imag, prod, put, putmask, real, sum
基本统计
cov, mean, std, var
基本线性代数
cross, dot, outer, svd, vdot
领取专属 10元无门槛券
私享最新 技术干货