【numpy数据统计与分析】

在numpy中,数组运算更加快速并且简洁尤其在于处理数据方面

一、排序

函数排序方式
sort()直接排序
argsort()间接排序
lexsort()间接排序

1.1sort()使用sort函数进行排序。

arr = np.array([8,5,6,3,9,4,3,6,7,3])
print('排序前:',arr)
arr.sort()
print('排序后:',arr)
# 排序前: [8 5 6 3 9 4 3 6 7 3]
# 排序后: [3 3 3 4 5 6 6 7 8 9]

 带轴向参数的sort排序。

arr = np.array([[6,2,7,5],[9,8,8,6],[7,6,8,4]])
print('横向排序前:\n',arr)
arr.sort(axis = 1)   #沿横向排序 ‘改0是纵向’
print('横向排序后:\n',arr)
# 横向排序前:
#  [[6 2 7 5]
#  [9 8 8 6]
#  [7 6 8 4]]
# 横向排序后:
#  [[2 5 6 7]
#  [6 8 8 9]
#  [4 6 7 8]]

1.2argsort() lexsort()

arr = np.array([2,1,7,10,10,12,11,15,11,14])
print('排序前:',arr)
print('排序后:',arr.argsort())
# 排序前: [ 2  1  7 10 10 12 11 15 11 14]
# 排序后: [1 0 2 3 4 6 8 5 9 7]
#返回值是排序的下标排列 可以理解为索引


a=[2,5,8,4,3,7,6]
b=[9,4,0,4,0,2,1]
c=np.lexsort((a,b))
print(c)

# [4 2 6 5 3 1 0]

二、重复数据与去重

在numpy中实现重复数据用tile(),repeat(),去重用unique() 

2.1使用tile函数实现数据重复。

arr = np.arange(5)
print('处理前:',arr)
re = np.tile(arr,3)
print('重复数据处理:\n',re) 

# 处理前: [0 1 2 3 4]
# 重复数据处理:
#  [0 1 2 3 4 0 1 2 3 4 0 1 2 3 4]

2.2 使用repeat函数实现数据重复。

import numpy as np
arr1 = np.arange(11)
print('原数据:',arr1)
rp1 = np.tile(arr1,3)
print('原数据重复3次:\n',np.tile(arr1,4))
arr2 = np.array([[1,2,3],[4,5,6]])
print('重复数据处理:\n',arr2.repeat(2,axis=0))
# 原数据: [ 0  1  2  3  4  5  6  7  8  9 10]
# 原数据重复3次:
#  [ 0  1  2  3  4  5  6  7  8  9 10  0  1  2  3  4  5  6  7  8  9 10  0  1
#   2  3  4  5  6  7  8  9 10  0  1  2  3  4  5  6  7  8  9 10]
# 重复数据处理:
#  [[1 2 3]
#  [1 2 3]
#  [4 5 6]
#  [4 5 6]]

 2.3unique去重

arr1 = np.array(['学校','老师','学生','教室','老师'])
print('原数据:',arr1)
print('去重后的数组:',np.unique(arr1)) 
# 原数据: ['学校' '老师' '学生' '教室' '老师']
# 去重后的数组: ['学校' '学生' '教室' '老师']

三、常用的统计函数

函数说明
np.sum数组的和
np.sum(arr,axis = 0)数组纵轴的和
np.sum(arr,axis = 1)数组横轴的和
np.mean数组的均值
np.mean(arr,axis = 1)数组横轴的均值
np.std数组的标准差
np.std(arr,axis = 1)数组横轴的标准差
arr = np.arange(36).reshape(6,6)
print('创建的数组:\n',arr)
print('数组的和:',np.sum(arr))
print('数组纵轴的和:',np.sum(arr,axis = 0))
print('数组横轴的和:',np.sum(arr,axis = 1))
print('数组的均值:',np.mean(arr))
print('数组横轴的均值:',np.mean(arr,axis = 1))
print('数组的标准差:',np.std(arr))
print('数组横轴的标准差:',np.std(arr,axis = 1))
# 创建的数组:
#  [[ 0  1  2  3  4  5]
#  [ 6  7  8  9 10 11]
#  [12 13 14 15 16 17]
#  [18 19 20 21 22 23]
#  [24 25 26 27 28 29]
#  [30 31 32 33 34 35]]
# 数组的和: 630
# 数组纵轴的和: [ 90  96 102 108 114 120]
# 数组横轴的和: [ 15  51  87 123 159 195]
# 数组的均值: 17.5
# 数组横轴的均值: [ 2.5  8.5 14.5 20.5 26.5 32.5]
# 数组的标准差: 10.388294694831615
# 数组横轴的标准差: [1.70782513 1.70782513 1.70782513 1.70782513 1.70782513 1.70782513]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值