python快速处理数据_Python科学计算:用NumPy快速处理数据

创建数组

import numpy as np

a=np.array([1,2,3])

b=np.array([[1,2,3],[4,5,6],[7,8,9]])

b[1,1]=10

print(a.shape)

print(b.shape)

print(a.dtype)

print(b)

结构数组

import numpy as np

persontype=np.dtype({

"names":["name","age","chinese","math","english"],

"formats":["S32","i","i","i","f"]

})

peoples=np.array([("ZhangFei",32,75,100,90),

("GuanYu",24,85,96,88.5),("ZhaoYun",28,85,92,96.5),

("HuangZhong",29,65,85,100)],dtype=persontype)

ages=peoples[:]["age"]

chineses = peoples[:]['chinese']

maths = peoples[:]['math']

englishs = peoples[:]['english']

print(np.mean(ages))

print(np.mean(chineses))

print(np.mean(maths))

print(np.mean(englishs))

连续数组的创建

import numpy as np

x1=np.arange(1,11,2) #初始值、终值、步长

x2=np.linspace(1,9,5) #初始值、终值、元素个数

print(x1)

print(x2)

排序

import numpy as np

'''

sort(a, axis=-1, kind=‘quicksort’, order=None),默认情况下使 用的是快速排序;在 kind 里,可以指定 quicksort、mergesort、heapsort 分别表示快 速排序、合并排序、堆排序。

同样 axis 默认是 -1,即沿着数组的最后一个轴进行排序, 也可以取不同的 axis 轴,或者 axis=None 代表采用扁平化的方式作为一个向量进行排 序。

另外 order 字段,对于结构化的数组可以指定按照某个字段进行排序

'''

a=np.array([[4,3,2],[2,4,1]])

print(np.sort(a))

# print(np.sort(a,axis=None))

# print(np.sort(a,axis=0))

print(np.sort(a,axis=1))

算术运算

import numpy as np

x1=np.arange(1,11,2)

x2=np.linspace(1,9,5)

print(x1,x2)

print(np.add(x1,x2)) #加

print(np.subtract(x1,x2)) #减

print(np.multiply(x1,x2)) #乘

print(np.divide(x1,x2)) #除

print(np.power(x1,x2)) #求n次方

print(np.remainder(x1,x2)) #求余数

统计函数

import numpy as np

a=np.array([[1,2,3],[4,5,6],[7,8,9]])

#计数组 / 矩阵中的最大值函数 amax(),最小值函数 amin()

print(np.amin(a))

print(np.amin(a,0))

print(np.amin(a,1))

print(np.amax(a))

print(np.amax(a,0))

print(np.amax(a,1))

#统计最大值与最小值之差 ptp()

print(np.ptp(a)) #统计数组中最大值与最小值的差,即 9-1=8

print(np.ptp(a,0)) #沿着 axis=0 轴的最大值与最小值之差,即 7-1=6(当然 8-2=6,9- 3=6,第三行减去第一行的 ptp 差均为 6)

print(np.ptp(a,1)) #沿着 axis=1 轴的最大值 与最小值之差,即 3-1=2(当然 6-4=2, 9-7=2,即第三列与第一列的 ptp 差均为 2)

#统计数组的百分位数 percentile()

'''

percentile() 代表着第 p 个百分位数,这里 p 的取值范围是 0-100,如果 p=0, 那么就是求最小值,如果 p=50 就是求平均值,如果 p=100 就是求最大值。同样你也可 以求得在 axis=0 和 axis=1 两个轴上的 p% 的百分位数

'''

print(np.percentile(a,50))

print(np.percentile(a,50,axis=0))

print(np.percentile(a,50,axis=1))

# 统计数组中的中位数 median()、平均数 mean()

# 求中位数

print(np.median(a))

print(np.median(a,axis=0))

print(np.median(a,axis=1))

# 求平均数

print(np.mean(a))

print(np.mean(a,axis=0))

print(np.mean(a,axis=1))

#统计数组中的加权平均值 average()

a=np.array([1,2,3,4])

wts=np.array([1,2,3,4])

print(np.average(a))

print(np.average(a,weights=wts))

#统计数组中的标准差 std()、方差 var()

a=np.array([1,2,3,4])

print(type(a))

print(np.std(a))

print(np.var(a))

练习题:统计全班成绩

import numpy as np

persontype=np.dtype({

"names":["name","chineses","englishs","maths"],

"formats":["U10","i","i","i"]

})

peoples=np.array([

("张飞",66,65,30),

("关羽",95,85,98),

("赵云",93,92,96),

("黄忠",90,88,77),

("典韦",80,90,90)

],dtype=persontype)

# print(peoples)

'''

平均成绩、最小成绩、最大成绩、方差、标准差。

然后把这些人的总成绩 排序,得出名次进行成绩输出

'''

name=peoples[:]["name"]

chineses = peoples[:]['chineses']

englishs = peoples[:]['englishs']

maths = peoples[:]['maths']

#平均数

print("语文平均分: ",np.mean(chineses))

print("数学平均分: ",np.mean(maths))

print("英语平均分: ",np.mean(englishs))

#最小成绩

print("语文最小成绩: ",np.min(chineses))

print("英语最小成绩: ",np.min(englishs))

print("数学最小成绩: ",np.min(maths))

#最大成绩

print("语文最大成绩: ",np.max(chineses))

print("英语最大成绩: ",np.max(englishs))

print("数学最大成绩: ",np.max(maths))

#标准差

print("语文标准差: ",np.std(chineses))

print("英语标准差: ",np.std(englishs))

print("数学标准差: ",np.std(maths))

#方差

print("语文方差: ",np.var(chineses))

print("英语方差: ",np.var(englishs))

print("数学方差: ",np.var(maths))

#总成绩

print(peoples[:][:1])

print(np.sort())

peoples[:]['总成绩']=chineses+englishs+maths

print(peoples)

#总成绩进行排序

# total=peoples[:]['chineses']+peoples[:]['englishs']+peoples[:]['maths']

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值