数据分析之-numpy

1.numpy库安装导入

windows下和linux下都可以使用pip安装,安装之前最好把pip升级到最新版

python -m pip  install --upgrade pip
pip install numpy
import numpy as py

2.常用方法介绍

  • 数组属性
方法说明
np.ndim()查看维度N
np.dtype()查看数据的类型
np.size()统计数组中所有元素的个数
np.itemsize()查看元组中分配给元素的字节数
np.shape()查看数组的维度(x,y,z)
  • 创建数组
方法说明
np.ones()创建全为1的数组
np.zeros()创建全为0的数组
np.diag([1,2,3])创建对角线不为1的数组,对角的类型是列表中数据的类型
np.eye()创建对角线为1的数组,对角类型是float型,只对二维数组有效
np.full()创建为自定义数的数组
np.empty()创建随机的数组
np.random()创建随机的数组(单独一个随机模组)
  • 数组操作
方法说明
np.resize()改变数组的维度,改变覆盖原来的数据
np.reshape()改变数组维度, 不改变原数据
arr[x][y][…]多维数组根据索引取值
arr[x:y,a:b]多维数组范围切片取值,第一个:的范围为第一个维度的索引范围,后面依次
arr[arr>n]多维int数组可以使用比较值取值>,<,<=,>=,&,…
np.swapaxes()用于两个维度之间互换
np.T用于两个维度之间互换
np.where(arr>0)根据条件输出符合元素的索引位置
np.ravel()把多维数组拉平到一维
np.transpose()维度变换
np.stack((arr1,arr2),axis=0/1)合并数组(可以增加维度)
np.concatenate((arr1,arr2),axis=0/1)合并数组(不会增加维度)
np.stack(arr1,axis=0/1/2)单个3维数组的x,y,z轴变换
np.concatenate(arr1,axis=0/1)单个3维数组的减维操作(x,y*z)
  • 数组计算函数操作
方法说明
np.add()加法
np.subtract()减法
np.multiply()乘法
np.divide()除法
乘方:**
np.sqrt()开方
np.sum()求和
np.mean()完成不了加权
np.average()求平均数,可以加权值
np.mean()均值
np.median()位于中间的值,如果是偶数个元素取中间的2个元素的均值
np.binconut(arr)众数(生成一个全是0的列表,统计arr中的整数出现的次数展示在对应的位置)
np.var()方差
np.std()标准准差
np.ptp()极差
np.max()最大值
np.min()最小值
np.std()/np.mean()变异系数

3.常用方法实例演示介绍

  • 数组属性
list1=[1,2,3,4,5,6,7,7]
arr=numpy.array(list1)
arr
#输出
array([1, 2, 3, 4, 5, 6, 7, 7])

arr.ndim
#输出
1

arr.size
#输出
8

arr.dtype
#输出
dtype('int64')
arr.itemsize
#输出
8

arr.share
#输出
(8,)
  • 创建数组
arr1=numpy.ones((6,8))
arr1
#输出
array([[1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1., 1., 1.]])

arr2=numpy.zeros((5,7))
arr2
#输出
array([[0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0.]])

arr3=numpy.full((5,6),10.0)
arr3
#输出
array([[10., 10., 10., 10., 10., 10.],
       [10., 10., 10., 10., 10., 10.],
       [10., 10., 10., 10., 10., 10.],
       [10., 10., 10., 10., 10., 10.],
       [10., 10., 10., 10., 10., 10.]])

arr4=numpy.eye(6,6)
arr4
#输出
array([[1., 0., 0., 0., 0., 0.],
       [0., 1., 0., 0., 0., 0.],
       [0., 0., 1., 0., 0., 0.],
       [0., 0., 0., 1., 0., 0.],
       [0., 0., 0., 0., 1., 0.],
       [0., 0., 0., 0., 0., 1.]])

arr5=numpy.diag([2,3,4,5,6,7])
arr5
#输出
array([[2, 0, 0, 0, 0, 0],
       [0, 3, 0, 0, 0, 0],
       [0, 0, 4, 0, 0, 0],
       [0, 0, 0, 5, 0, 0],
       [0, 0, 0, 0, 6, 0],
       [0, 0, 0, 0, 0, 7]])

arr6=numpy.empty((4,6))
arr6
#输出
array([[6.92755646e-310, 1.29428836e-316, 6.92755663e-310,
        6.92751722e-310, 6.92755660e-310, 6.92751722e-310],
       [6.92755663e-310, 6.92751721e-310, 6.92755660e-310,
        6.92751722e-310, 6.92755663e-310, 6.92754709e-310],
       [6.92755660e-310, 6.92751722e-310, 6.92755663e-310,
        6.92751721e-310, 6.92755660e-310, 6.92751721e-310],
       [6.92755663e-310, 6.92751722e-310, 6.92755660e-310,
        6.92751722e-310, 6.92755663e-310, 6.92751721e-310]])

arr7=numpy.arange(16)
arr8=numpy.arange(1,15,2)	#按照步长为2取值
arr7
#输出
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15])

arr8
#输出
array([ 1,  3,  5,  7,  9, 11, 13])

arr9=numpy.random.random((4,5))	#0-1时间的flod
arr9
#输出
array([[0.39014415, 0.15930384, 0.43981111, 0.4446235 , 0.33089513],
       [0.90241201, 0.17567062, 0.6859736 , 0.04801726, 0.48778257],
       [0.27235488, 0.6822986 , 0.73828909, 0.59851984, 0.25168036],
       [0.97223342, 0.02086877, 0.62417176, 0.74923146, 0.07491146]])

arr10=numpy.random.randn(3,4)	#-1-1之间随机数
arr10
#输出
array([[-0.38146578, -0.56418392,  0.08646721,  0.01721312],
       [ 1.41631843,  1.21317236,  0.26394517,  0.5338062 ],
       [ 0.59309482,  1.56757917, -1.69842502,  1.17045788]])

arr11=numpy.random.randint(10,100,5)	#10-100之间随机取5个数
arr11
#输出
array([47, 22, 97, 53, 96])
  • 数组操作
arr12 = numpy.arange(1,13)
arr12
#输出
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])

arr12.resize(3,4)
#输出
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])

arr12.reshape(2,6)	#reshape操作完数组是不覆盖原数组,如果需要改变结果把结果赋值给原数组
#输出
array([[ 1,  2,  3,  4,  5,  6],
       [ 7,  8,  9, 10, 11, 12]])
       
arr12
#输出
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])

arr12[0][2]
arr12
#输出
3

arr12[1:,2:-1]
arr12
#输出
array([[ 7],
       [11]])
       
arr12[arr12>6]
arr12
#输出
array([ 7,8,  9, 10, 11, 12])

arr12[(arr12>2) & (arr12<7)]
arr12
#输出
array([3, 4, 5, 6])

arr12[(arr12<2)| (arr12>7)]
arr12
#输出
array([ 1,  8,  9, 10, 11, 12])

arr13=numpy.arange(16).reshape(4,4)
arr13
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])

arr13.transpose(1,0)	#这里的0和1指维度的索引位置,如果是3维就是0,1,2,互换他们的位置可以实现维度变化
array([[ 0,  4,  8, 12],
       [ 1,  5,  9, 13],
       [ 2,  6, 10, 14],
       [ 3,  7, 11, 15]])
       
arr12.T
#输出
array([[ 0,  4,  8, 12],
       [ 1,  5,  9, 13],
       [ 2,  6, 10, 14],
       [ 3,  7, 11, 15]])

arr12.swapaxes(1,0)
#输出
array([[ 0,  4,  8, 12],
       [ 1,  5,  9, 13],
       [ 2,  6, 10, 14],
       [ 3,  7, 11, 15]])

arr14 = numpy.arange(9).reshape(3,3)
arr15 = arr2=numpy.arange(9,18).reshape(3,3)
arr14
#输出
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
arr15
#输出
array([[ 9, 10, 11],
       [12, 13, 14],
       [15, 16, 17]])

np.stack((arr14,arr15),axis=0) #默认axis是等于 0,合并之后变成(3,2,3)维度3,增加了1,同时2个数组作为2个元素组成一个新的元组
#输出
array([[[ 0,  1,  2],
        [ 3,  4,  5],
        [ 6,  7,  8]],

       [[ 9, 10, 11],
        [12, 13, 14],
        [15, 16, 17]]])

np.stack((arr14,arr15),axis=1)	#2个元组中相同的轴合并到一起组成新维
#输出
array([[[ 0,  1,  2],
        [ 9, 10, 11]],

       [[ 3,  4,  5],
        [12, 13, 14]],

       [[ 6,  7,  8],
        [15, 16, 17]]])

np.concatenate((arr14,arr15),axis=0)	#将arr15并入arr14
#输出
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 9, 10, 11],
       [12, 13, 14],
       [15, 16, 17]])
np.concatenate((arr14,arr15),axis=1)	#将arr15中与arr4相同的维度元素合并
#输出
array([[ 0,  1,  2,  9, 10, 11],
       [ 3,  4,  5, 12, 13, 14],
       [ 6,  7,  8, 15, 16, 17]])

arr16 = np.arange(16).reshape(2,2,4)
arr16
#输出
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7]],

       [[ 8,  9, 10, 11],
        [12, 13, 14, 15]]])

np.stack(arr16,axis=1)	#axis=0保持原数据不变不再测试,axis=1相当于执行了np.transpose(1,0,2),变换了原维度0和1的位置
#输出
array([[[ 0,  1,  2,  3],
        [ 8,  9, 10, 11]],

       [[ 4,  5,  6,  7],
        [12, 13, 14, 15]]])
np.stack(arr16,axis=2) #axis=2相当于执行了np.transpose(0,2,1),变换了原维度1和2的位置
#输出
array([[[ 0,  8],
        [ 1,  9],
        [ 2, 10],
        [ 3, 11]],

       [[ 4, 12],
        [ 5, 13],
        [ 6, 14],
        [ 7, 15]]])

np.concatenate(arr16, axis=1)	#减维 原维度(2,2,4)相当于执行了(2,2*4)concatenate的axis只能为1或者0
#输出
array([[ 0,  1,  2,  3,  8,  9, 10, 11],
       [ 4,  5,  6,  7, 12, 13, 14, 15]])


  • 数组计算函数操作
arr17 = np.array([5,5,5,8,8,9,10])
np.bincount(arr17)	#输出值为最大整数个0,相同的数字每次出现在对应的位置加1
#输出
array([0, 0, 0, 0, 0, 3, 0, 0, 2, 1, 1], dtype=int64)
np.argmax(np.bincount(arr17)) #众数只能通过bincount间接算出
#输出
5 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值