热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python数据分析(1)Numpy库使用方法

Numpy是一个开源的Python科学计算库,它是python科学计算库的基础库,许多其他著名的科学计算库如Pandas,Scikit-learn等都要用到Numpy库的一些功能。Num
Numpy是一个开源的Python科学计算库,它是python科学计算库的基础库,许多其他著名的科学计算库如Pandas,Scikit-learn等都要用到Numpy库的一些功能。
Numpy数组通常是由相同种类的元素组成的,即数组中的数据项的类型一致。这样有一个好处,由于知道数组元素的类型相同,所以能快速确定存储数据所需空间的大小。Numpy数组能够运用向量化运算来处理整个数组,速度较快;而Python的列表则通常需要借助循环语句遍历列表,运行效率相对来说要差。Numpy使用了优化过的C API,运算速度较快

#coding=gbk
#numpy数组的大小是固定的
import numpy as np  #导入包
from matplotlib.pyplot import axis
a=np.array([1,2,3])
print(a)    #输出:[1 2 3]
print('分割线------')
#array()参数可以是单层或多层列表
b=np.array([[1.2,3.4],[2.6,4.5]])
print(b)    #shuhcu :[[1.2 3.4]
             #           [2.6 4.5]]
print(b.ndim)   #2,表示数组的维度
print(b.size)   # 4,表示数据的个数
print(b.shape)  # (2, 2)
#array()参数可以是单层或多层元组,结果与参数是列表是一样的
c=np.array(((1,2,3),(4,5,6)))
print(c)    
# #输出:
# [[1 2 3]
#  [4 5 6]]
numpy数据类型:

#numpy数据类型
#使用dtype定义数据类型
f=np.array([[1,2],[3,4]],dtype=complex)
print(f)
# [[1.+0.j 2.+0.j]    输出类型为复数形式
#  [3.+0.j 4.+0.j]]

#创建数组的函数
g=np.zeros((3,3))   #创建3行3列的数组
print(np.ones((3,3)))
print(np.arange(0,12).reshape(3,4))
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]
print(np.linspace(1,15,5))
#[ 1.   4.5  8.  11.5 15. ]    将其分成5份
print(np.random.random((3,3)))
# [[0.68333882 0.64261184 0.31273476]    生成3行3列的随机数
#  [0.34138222 0.62380152 0.24387784]
#  [0.70731665 0.5085779  0.26858421]]

#基本运算
A=np.arange(0,9).reshape((3,3))
B=np.arange(10,19).reshape((3,3))
print(A+B)
# [[10 12 14]    numpy中的数组运算都是元素级,即将一个数组看做一个整体
#  [16 18 20]
#  [22 24 26]]
print(A*B)
# [[  0  11  24]
#  [ 39  56  75]
#  [ 96 119 144]]
#矩阵乘积
print(np.dot(A,B))
# [[ 45  48  51]
#  [162 174 186]
#  [279 300 321]]    表示A矩阵和B矩阵相乘
#自减自加
A+=1
B-=1
print(A)
# [[1 2 3]        A全部元素自加 1
#  [4 5 6]
#  [7 8 9]]
print(B)
#聚合函数:对一个数组计算,返回一个单一值得函数
print(np.mean(B))   #得到一个平均值
print(np.median(B))
print(np.var(B))    #得到方差  6.666666666666667
print(np.sqrt(np.var(B)))
print(np.std(B)) #得到标准方差 2.581988897471611
#索引
print(A[1,2]) #形式如: A[ ] ,查找第2行第3列的数据
#切片
print(A[0,:])   #抽取第一行    [1 2 3]
print(A[:,0])
print(A[0:2,0:2])#抽取 前2行前2列
#数组迭代
for items in A.flat:
    print(items)    #遍历A数组中每个元素
a1=np.apply_along_axis(np.mean, axis=1, arr=A)
print(a1)   #[2. 5. 8.] ,    axis=1 求得每行的平均数 ,axis=0时,求得每列的平均数

def add(x):
    return x+12
a2=np.apply_along_axis(add, axis=1, arr=A)
print(a2)
#布尔操作
print(A>5)
# [[False False False]        获得bool形式的数组
#  [False False  True]
#  [ True  True  True]]
print(A[A>5])   #获得大于5的新的数组    [6 7 8 9]

A1=np.array(np.random.random((3,4)))
print(A1)
print(A1.ravel())   #使数组转换成一维数组
print(A1.transpose())   #交换行列的顺序

#数组操作
#1数组连接
c=np.ones((3,3))
b=np.zeros((3,3))
print(np.vstack((c,b))) #垂直入栈操作,即在c的下面增加
# [[1. 1. 1.]
#  [1. 1. 1.]
#  [1. 1. 1.]
#  [0. 0. 0.]
#  [0. 0. 0.]
#  [0. 0. 0.]]
print(np.hstack((c,b))) #水平入栈,在右边入栈
# [[1. 1. 1. 0. 0. 0.]
#  [1. 1. 1. 0. 0. 0.]
#  [1. 1. 1. 0. 0. 0.]]
#2数组切分
b1=np.arange(16).reshape(4,4)
print(b1)
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]
#  [12 13 14 15]]
[b2,b3]=np.hsplit(b1,2)     #水平切分,按照数组的宽度切分
print(b2)
# [[ 0  1]
#  [ 4  5]
#  [ 8  9]
#  [12 13]]
[b7,b8]=np.vsplit(b1,2)     #垂直切分,按照数组的高度切分
print(b7)
# [[0 1 2 3]
#  [4 5 6 7]]
[b4,b5,b6]=np.split(b1,[1,3],axis=1)   #将b1数组分为3组 
print(b4)
# [[ 0]    输出最后一列
#  [ 4]
#  [ 8]
#  [12]]

#广播机制
f1=np.arange(4)
f2=np.arange(16).reshape(4,4)
print(f1+f2)
# [[ 0  2  4  6]    
#  [ 4  6  8 10]
#  [ 8 10 12 14]
#  [12 14 16 18]]
参考《Python数据分析实战》

推荐阅读
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 在本教程中,我们将看到如何使用FLASK制作第一个用于机器学习模型的RESTAPI。我们将从创建机器学习模型开始。然后,我们将看到使用Flask创建AP ... [详细]
  • Python 可视化 | Seaborn5 分钟入门 (六)——heatmap 热力图
    微信公众号:「Python读财」如有问题或建议,请公众号留言Seaborn是基于matplotlib的Python可视化库。它提供了一个高级界面来绘制有吸引力的统计图形。Seabo ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • Python使用Pillow包生成验证码图片的方法
    本文介绍了使用Python中的Pillow包生成验证码图片的方法。通过随机生成数字和符号,并添加干扰象素,生成一幅验证码图片。需要配置好Python环境,并安装Pillow库。代码实现包括导入Pillow包和随机模块,定义随机生成字母、数字和字体颜色的函数。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • Python教学练习二Python1-12练习二一、判断季节用户输入月份,判断这个月是哪个季节?3,4,5月----春 ... [详细]
  • 颜色迁移(reinhard VS welsh)
    不要谈什么天分,运气,你需要的是一个截稿日,以及一个不交稿就能打爆你狗头的人,然后你就会被自己的才华吓到。------ ... [详细]
  • 很多时候在注册一些比较重要的帐号,或者使用一些比较重要的接口的时候,需要使用到随机字符串,为了方便,我们设计这个脚本需要注意 ... [详细]
  • 假设我有两个数组A和B,其中A和B都是mxn.我现在的目标是,对于A和B的每一行,找到我应该在B的相应行中插入A的第i行元素的位置.也就是说,我希望将np.digitize或np. ... [详细]
  • 关于如何快速定义自己的数据集,可以参考我的前一篇文章PyTorch中快速加载自定义数据(入门)_晨曦473的博客-CSDN博客刚开始学习P ... [详细]
  • 一、死锁现象与递归锁进程也是有死锁的所谓死锁:是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作 ... [详细]
  • STL迭代器的种类及其功能介绍
    本文介绍了标准模板库(STL)定义的五种迭代器的种类和功能。通过图表展示了这几种迭代器之间的关系,并详细描述了各个迭代器的功能和使用方法。其中,输入迭代器用于从容器中读取元素,输出迭代器用于向容器中写入元素,正向迭代器是输入迭代器和输出迭代器的组合。本文的目的是帮助读者更好地理解STL迭代器的使用方法和特点。 ... [详细]
author-avatar
我是vb小草
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有