为了账号安全,请及时绑定邮箱和手机立即绑定

数据挖掘之Numpy详细了解

不是最全,但是也是很详细的练习,阅读时长可能过长,建议先收藏

(一) 定义


(1)官方文档:

NumPy is the fundamental package for scientific computing with Python. It contains among other things:

a powerful N-dimensional array object
sophisticated (broadcasting) functions
tools for integrating C/C++ and Fortran code
useful linear algebra, Fourier transform, and random number capabilities


(2)大概意思是:

一个用python实现的科学计算包。
1、一个强大的N维数组对象Array;
2、比较成熟的(广播)函数库;
3、用于整合C/C++和Fortran代码的工具包;
4、实用的线性代数、傅里叶变换和随机数生成函数。
5、numpy和稀疏矩阵运算包scipy配合使用更加方便

(二)使用概览

由于这里使用的函数比较多,故分了几个大模块进行练习,练习具体到使用每个函数

(一)使用numpy构建矩阵

(二)元素的获取

(三)各种数学函数

(四)统计函数

(五)映射函数

(六)离散与连续分布

(七)数据加载与导出

NumPy

(三)具体使用

(一)使用numpy构建矩阵【array函数】

import numpy as np"""
创建一维数组(列表或者元组),二维数组(嵌入的列表或元组)
"""arr1 = np.array([1,3,5,6,7,9])
print(arr1)

arr2 = np.array((2,3,4,5,6,8,9))
print(arr2)

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

arr_two_2 = np.array([[2,3,4,5],[2,3,4,5],[5,6,7,9]])
print(arr_two_2)

运行结果:

NumPy构建矩阵

需要注意的是arr_two返回的是一个list,里面的数组个数不一致,返回的便是每个list

(二)元素的获取【shape函数】

(1) 返回一个数组的行数与列数

"""
返回一个数组的行数和列数
"""arr1_shape = arr1.shape
arr2_shape = arr2.shape
arr_two_shape = arr_two.shape
arr_two_shape_2 = arr_two_2.shape
print('返回列表行数和列数********************')
print(arr1_shape,arr2_shape,arr_two_shape,arr_two_shape_2)

(2)使用索引的方式,获取元素

"""
元素的获取:使用索引的方式   行列的表示[行,列]
"""print('元素的获取,使用索引的方式*******************')
print(arr_two_2,'\n')# (1)获取二维数组的某列(这里获取第二列,列表索引下标从0开始)print(arr_two_2[:,2],'\n')# (2)获取二维数组的某行(这里获取第一行)print(arr_two_2[1,:],'\n')# (3)获取二维数组的某个元素print(arr_two_2[2,3],'\n')

(3)获取列表矩阵

print("返回列表矩阵****************")print(arr_two_2,'\n')# 获取二维数组的某几行print(arr_two_2[[0,2],:],'\n')# 获取二维数组的某几列print(arr_two_2[:,[0,1,3]],'\n')# 获取二维数组的某几行某几列元素(M3):这里得到的是一个一维数组print(arr_two_2[[0,2],[2,3]],'\n')# 获取二维数组的某几行某几列元素(M4): 这里得到的是一个2x2的矩阵print(arr_two_2[np.ix_([0,2],[2,3])])

NumPy元素的获取

(三)各种数学函数

函数包括:绝对值,算数平方根,平方,指数,对数,符号函数,向上/下取整,返回最近的整数,幂运算

建议收藏后在PC端看,

print('*******************  np 的其他相关数学函数   ************************* ')# 绝对值abs_template = [-3,-2,-1,0,1,2,3,4]
abs_np = np.abs(abs_template)
fabs_np = np.fabs(abs_template)print(abs_template,abs_np,fabs_np)# 算术平方根sqrt_num = 25
sqrt = np.sqrt(sqrt_num)print(sqrt)# 平方square_num = 4
square = np.square(square_num)print(square)# 指数print('指数:')
exp_num = 6
exp = np.exp(exp_num)print(exp)# 对数log_2 = np.log2(2)
log_10 = np.log10(10)
log_20 = np.log(20)print(log_2,log_10,log_20)# 符号函数 (大于0的返回1,小于0的返回-1,0返回0值)sign_over = np.sign(2)
sign_below = np.sign(-2)
sign_zero = np.sign(0)print(sign_over,sign_below,sign_zero)# 向上取整cell_num = np.ceil(5.4)
cell_num2 = np.ceil(-5.4)
cell_num3 = np.ceil(-5)print(cell_num,cell_num2,cell_num3)# 向下取整floor_num1 = np.floor(5.6)
floor_num2 = np.floor(5.4)
floor_num3 = np.floor(-5.6)print(floor_num1,floor_num2,floor_num3)# 返回最近的整数rint_num1 = np.rint(5.6)
rint_num2 = np.rint(5.2)print(rint_num1,rint_num2)# 判断是否缺失print('是否缺失')
isnan_num = np.isnan((2,3,-1,1))print(isnan_num)# 判断是否无限:isfinite  (有限:isinf)isfinite_num = np.isfinite(np.math.log10(2))print(isfinite_num)
isinf_num  = np.isinf(np.math.log(2,4))print(isinf_num)# 幂运算power_num = np.power(2,3)print(power_num)# 余数运算mod_num1 = np.mod(10,2)
mod_num2 = np.mod([12,14],3)print(mod_num1,mod_num2)

数学函数

(四)统计函数

余数运算,最大/小值,浮点最大/小值,求和,均值,标准差,方差,中位数

print('统计函数:')# 最大值arr_1 = [23,2344,435,54,66,7,99]
max_num = np.max(arr_1)print(max_num)# 浮点数最大值fmax_num = np.fmax([1,4,9],[0,5,10])print(fmax_num)# 最小值min_num = np.min(arr_1)print(min_num)# 浮点数的最小值(此处的比值为两个list集合一一对应进行比较,可查看numpy官方文档)fmin_num = np.fmin([2,3,4],[1,5,3])print(fmin_num)# 求和sum_num = np.sum([2,3,4,5])print(sum_num)# 均值mean_num = np.mean([2,2,3,3,4,4])print(mean_num)# 标准差:样本平均数方差的开平方#(两组数据平均值都相同的话,这时候标准差大的数据反而不好)# 标准差是方差的算术平方根std_num = np.std([2,2,3,3,4,4])
std_num2 = np.std([1,2,0,6,4,5])print(std_num,std_num2)# 方差var_num = np.var([2,2,3,3,4,4])
var_num2 = np.var([1,2,0,6,4,5])print(var_num,var_num2)# 中位数:为奇数个时,X(n+1)/2  偶数个时:(X(n/2) + X(n/2+1))/2median_num = np.median([2,2,3,3,4,4,5,5])
median_num2 = np.median([1,2,0,6,4,5])print(median_num,median_num2)

统计函数

(五)映射函数

#   映射函数   apply_along_axisprint('******************  映射函数开始  *********************')
arr3 = np.array([[1,2,3,4],[5,6,7,8],[3,4,5,6]])print(arr3,'\n')# 对矩阵的每一行计算均值mean_arrays = np.apply_along_axis(func1d=np.mean,axis=1,arr=arr3)print(mean_arrays,'\n')# 对矩阵的每一行进行求和计算sum_arrays = np.apply_along_axis(func1d=np.sum,axis=1,arr=arr3)print(sum_arrays,'\n')

映射函数

(六)离散与连续分布

"""
随机数生成(常用的分布随机数):离散分布,连续分布
1 离散分布:二项分布,泊松分布
2 连续分布:正态分布(高斯分布),其他常用分布
"""# (一)二项分布  是n个独立的是/非试验中成功的次数的离散概率分布# 设置随机种子,保证每次运行都出现相同的随机数np.random.seed(123)# 二项分布r1 = np.random.binomial(n=10,p=0.2,size=20)
print(len(r1))
print(r1,'\n')

r2 = np.random.binomial(n=10,p=0.2,size=(3,5))
print(r2,'\n')# 泊松分布(单位时间内随机事件发生的次数)# 保证每次运行都会出现相同的随机数np.random.seed(1)
poisson1 = np.random.poisson(lam=6,size=10)
print(poisson1,'\n')
poisson2 = np.random.poisson(lam=(10,50,20),size=(5,3))#lamda参数分别取10,50,20,表示单位时间内某件事发生的频次print(poisson2,'\n')# (二) 连续分布# (1)正态分布# 均值为2,标准差为3normal = np.random.normal(loc=2,scale=3,size=10)
print(normal,'\n')

normal2 = np.random.normal(loc=2,scale=3,size=(3,5))
print(normal2)# 其他分布(t分布,f分布,均匀分布,这里暂时不举例)

离散与连续分布

(七)数据加载与导出

# numpy模块数据加载print('#####################    numpy 模块数据加载    #####################')# 数据写入"""
name:指定外部文件的路径
delimiter:指定文件中数据列的分隔符
skiprows:指定读数时跳过的行数
skip_header:指定跳过首行
usecols:指定读取的数据列
"""data_txt = np.loadtxt(fname='loadtxt.txt',delimiter=',',skiprows=1)# 推荐第二种data_txt2 = np.genfromtxt(fname='loadtxt.txt',delimiter=',',skip_header=1,usecols=[0,2])
print(data_txt,'\n')
print(data_txt2,'\n')# 数据写出"""
fname:指定数据写出的路径
X:指定需要写出的数据
fmt:指定输出数据的格式,默认科学计算法
delimiter:指定数据列之间的分隔符,默认空格符
newline:指定新行的标识符,默认换行
header:指定输出数据首行值
footer:指定输出数据的末行值
comments:指定注释符,默认“#”
"""input_data = '要写出的数据'np.savetxt(fname='F:data.txt',X=input_data,fmt='%.18e',delimiter=' ',newline='\n',header='',footer='',comments='#')

这里建议先收藏,留着以后空闲时间进行练习,或者在使用NumPy的时候进行翻阅,PS:我练习这个练习了一个下午,所以文章有些长,代码里面的注释已经很详细了,就暂时不过多的写注释了。



作者:徐代龙
链接:https://www.jianshu.com/p/f2cc1e41f214


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消