数据蛙数据分析每周作业

NumPy入门

2019-03-03  本文已影响1人  圆圆KK

NumPy、Pandas、Scipy是python的三个库,也是数据分析的常用库。NumPy便于存储和处理多维数组(N-dimensional array)ndarray,这里简单说明NumPy的使用,更多内容查看NumPy官方文档

安装包
pip install numpy

载入包

import numpy as np
1.生成数组

NumPy有多种生成数组的方式
(1)基本用法

常用方法 说明 输入
array 可输入列表、元组生成ndarry np.array([[1,2.0], [0,0],(1+1j,3.)])
zeros / ones 生成全为0或1的矩阵 np.zeros((2,3))
eye 生成对角线为1其余为0矩阵 np.eye(6,7,1, dtype=int)k=1为斜线偏移值
arange 可输入起终点、步距的矩阵 np.arange(2,10,2)
linsapce / logspace 生成整数或对数的等间距数列 np.linspace(0,20, 5,endpoint= False, retstep=True )

linspace,这里num=5,不设定则默认50;endpoint默认True,为闭区间,False为开区间;retstep默认False, True则返回间距;同样的还有logspace。

>>> np.array([[1,2.0], [0,0],(1+1j,3.)])
array([[1.+0.j, 2.+0.j],
       [0.+0.j, 0.+0.j],
       [1.+1.j, 3.+0.j]])
>>> np.zeros((2,3))
array([[0., 0., 0.],
       [0., 0., 0.]])
>>> np.eye(6,7,1,dtype=int)
array([[0, 1, 0, 0, 0, 0, 0],
       [0, 0, 1, 0, 0, 0, 0],
       [0, 0, 0, 1, 0, 0, 0],
       [0, 0, 0, 0, 1, 0, 0],
       [0, 0, 0, 0, 0, 1, 0],
       [0, 0, 0, 0, 0, 0, 1]])
>>> np.arange(2,10,2)
array([2, 4, 6, 8])
>>> np.linspace(0,20, 5,endpoint= False, retstep=True )
(array([ 0.,  4.,  8., 12., 16.]), 4.0)

(2)random生成随机数

常用方法 说明 输入
random.rand 生成[0,1)的随机数 np.random.rand(2,3)
random.randn 生成一组正态分布的数据, 标准正态分布的可用random.standard_normal 2*np.random.randn(2,3)+4
random.randint 返回离散均匀[a,b)范围的值,如果只输入一个值默认为[0,a)范围 np.random.randint(2,10,size=(2,4))
random.shuffle / random.permutation 改变序列顺序 a=np.arange(12).reshape(3,4) np.random.shuffle(a)
>>> np.random.rand(2,3)
array([[0.22128075, 0.31974379, 0.5859686 ],
       [0.3307407 , 0.18200795, 0.59027476]])
>>> 2*np.random.randn(2,3)+4
array([[4.65342832, 3.16739484, 5.30323633],
       [1.50943009, 4.36887803, 3.90668209]])
>>> np.random.randint(2,10,size=(2,4))
array([[3, 2, 4, 5],
       [2, 4, 3, 5]])
>>> a = np.arange(12).reshape(3,4)
>>> np.random.shuffle(a)
>>> a
array([[ 0,  1,  2,  3],
       [ 8,  9, 10, 11],
       [ 4,  5,  6,  7]])
2.数组处理

(1)基本用法

常用方法 说明 输入
reshape 改变形状 np.arange(2,10).reshape(2,4)
T 转置 np.arange(2,10).reshape(2,4).T
concatenate / append 连接/增加矩阵 np.concatenate((x,y), axis=1) / np.append(x,y,axis=1)axis默认为0,对应行
split 分离 np.split(x, [1, 2, 4],axis=1)axis默认为0,对应行
tile 重复 np.tile(x,(2,3)) (2,3)为沿轴复制的次数,分别对应0, 1轴
delete 删除 np.delete(a,(1,3),axis=0) (1,3)删除的位置,axis默认为None,None则平展矩阵
insert 插入 np.insert(a,(1,2),[[1],[3],[5]],axis=1)(1,2)插入位置,[[1],[3],[5]]插入数值,axis默认None
>>> np.arange(2,10).reshape(2,4)
array([[2, 3, 4, 5],
       [6, 7, 8, 9]])
>>> np.arange(2,10).reshape(2,4).T
array([[2, 6],
       [3, 7],
       [4, 8],
       [5, 9]])
>>> x = np.array([[3,4,5],[1,2,3]])
>>> y = np.array([[5],[4]])
>>> np.concatenate((x,y), axis=1)
array([[3, 4, 5, 5],
       [1, 2, 3, 4]])
>>> np.append(x,y,axis=1) #两者输出一样
array([[3, 4, 5, 5],
       [1, 2, 3, 4]])
>>> x = np.arange(12).reshape(4,3)
>>> np.split(x, [1, 2, 4])
[array([[0, 1, 2]]), array([[3, 4, 5]]), array([[ 6,  7,  8],
        [ 9, 10, 11]]), array([], shape=(0, 3), dtype=int32)]
>>> x = np.array([[2,3,4],[1,0,7]])
>>> np.tile(x,(2,3))
array([[2, 3, 4, 2, 3, 4, 2, 3, 4],
       [1, 0, 7, 1, 0, 7, 1, 0, 7],
       [2, 3, 4, 2, 3, 4, 2, 3, 4],
       [1, 0, 7, 1, 0, 7, 1, 0, 7]])
>>> a = np.arange(12).reshape(3,4)
>>> np.delete(a,(1,3),1)
array([[ 0,  2],
       [ 4,  6],
       [ 8, 10]])
>>> np.insert(a,(1,2),[[1],[3],[5]],1)
array([[ 0,  1,  1,  1,  2,  3],
       [ 4,  3,  5,  3,  6,  7],
       [ 8,  5,  9,  5, 10, 11]])
3.按条件截取数组
>>> a = np.arange(20).reshape(4,5)
>>> a
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])
>>> a[1]
array([5, 6, 7, 8, 9])
>>> a[1:3]
array([[ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
>>> a[::2]
array([[ 0,  1,  2,  3,  4],
       [10, 11, 12, 13, 14]])
>>> a[:,1]
array([ 1,  6, 11, 16])
>>> a[:,1:5:2]
array([[ 1,  3],
       [ 6,  8],
       [11, 13],
       [16, 18]])
>>> a[1,2]
7
上一篇 下一篇

猜你喜欢

热点阅读