Numpy介绍:

NumPy是高性能科学计算和数据分析的基础包。它是pandas等其他各种工具的基础。

NumPy的主要功能:
  1)ndarray,一个多维数组结构,高效且节省空间
  2)无需循环对整组数据进行快速运算的数学函数
  3)读写磁盘数据的工具以及用于操作内存映射文件的工具
  4)线性代数、随机数生成和傅里叶变换功能
  5)用于集成C、C++等代码的工具

pyhton里面安装、引入方式:
  安装方法:pip install numpy
  引用方式:import numpy as np

 创建数组:

  1. a=[1,2,3,4]
  2. b=np.array(a)
  3.  
  4. print(b,type(b)) #[1 2 3 4] <class 'numpy.ndarray'>

数组属性:

  1. #数组个数
  2. print(b.size) #
  3. #数组形状
  4. print(b.shape) #(4,)
  5. #每个元素占用你的字节数
  6. print(b.itemsize) #
  7. #维数
  8. print(b.ndim) #

arange定义一个数组,限定步长:

  1. np.arange() 参数为初始值、结束值(不包含)、步长
  2. array_arange=np.arange(10,30,5)
  3. print(array_arange) #[10 15 20 25]

linspace定义一个数组,限定数组元素的个数:

  1. np.linspace() 数为初始值、结束值(包含)、元素的个数,
  2. array_linspace=np.linspace(0,2,9) #结果第一位是0 中间数值平均分配 结束为2
  3. print(array_linspace) #[0. 0.25 0.5 0.75 1. 1.25 1.5 1.75 2. ]

快速创建N维数组:

ones,创建10行10列的数值为浮点1的矩阵

  1. array_one=np.ones((5,5),dtype=int) #dtype=int 可以设置类型
  2. print(array_one)

zeros,创建10行10列的数值为浮点0的矩阵

  1. array_zero=np.zeros((2,5,5)) #array_zero=np.zeros((2,5,5)) 2:表示创建2个5行5列的数组
  2. print(array_zero)

创建自定义数值的数组:

full,创建3*3 数值为5的数组

  1. full_array=np.full((3,3),5)
  2. print(full_array)

eye,用来构造单位矩阵(默认情况下输出的是对角线全“1”,其余全“0”的方阵

  1. eye_array=np.eye(3)
  2. print(eye_array)
  3.  
  4. '''结果
  5. [[1. 0. 0.]
  6. [0. 1. 0.]
  7. [0. 0. 1.]]
  8.  
  9. '''

empty,生成未初始化的随机值

  1. empty_array=np.empty((2,4))
  2. print(empty_array)
  3.  
  4. '''结果为
  5. [[6.23042183e-307 1.42417221e-306 1.37961641e-306 6.23039015e-307]
  6. [6.23053954e-307 1.78020169e-306 1.78021527e-306 3.91786943e-317]]
  7.  
  8. ''' 

random生成随机数组\数值

random.rand(),2*2 (范围是0-1)

  1. array_random=np.random.rand(2,2)
  2. print(array_random)

random.uniform(),随机生成指定范围内的一个数(小数)

  1. array_uniform=np.random.uniform(0,5)
  2. print(array_uniform) #0.6259318369377503

random.randint(),随机生成指定范围内的一个数(整数不包含2)

  1. array_randint=np.random.randint(0,2)
  2. print(array_randint) #

正太分布
给定均值/标准差/维度的正态分布np.random.normal(1.75, 0.1, (2, 3))

  1. #正态生成4行5列的二维数组
  2. arr=np.random.normal(1.75,0.1,(4,5))
  3. print(arr)
  4.  
  5. #截取第1至2行的第2至3列(从第0行算起)
  6. after_arr=arr[1:3,2:4] #【参数1,参数2】 参数1取的行 参数2取的是范围
  7. print(after_arr) #
  8.  
  9. '''结果
  10. [[1.7121083 1.79442264 1.88480996 1.74680449 1.94296451]
  11. [1.75145398 1.84717094 1.61700579 1.79300659 1.65306822]
  12. [1.84915626 1.82844994 1.42992838 1.74578747 1.81638628]
  13. [1.78611223 1.79935389 1.71098421 1.7065452 1.93011894]]
  14.  
  15. [[1.61700579 1.79300659]
  16. [1.42992838 1.74578747]]
  17. '''

reshape,改变数组形状(注意:要求前后元素个数匹配)

  1. one_20 = np.ones([20])
  2. print("-->1行20列<--")
  3. print(one_20)
  4.  
  5. #将上面的一维数组变为下面的二维
  6.  
  7. one_4_5 = one_20.reshape([4,5])
  8. print("将形状分为-->4行5列<--")
  9. print(one_4_5)

where,条件运算

  1. stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
  2. print(stus_score)
  3. #比较并替换运算
  4. res=np.where(stus_score<80,0,90) #(如果数值小于80,替换为0,如果大于80,替换为90)
  5. print(res)

统计运算

指定轴最大值amax(求每一行和列的最大值)

  1. # 指定轴最大值amax(求每一行和列的最大值)
  2. stus_score=np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
  3. print(stus_score)
  4.  
  5. result_amax=np.amax(stus_score,axis=0) #axis=0/1; 0表示列 1表示行
  6. print('每一列的最大值:',result_amax) #[86 88]
  7.  
  8. result_amax2=np.amax(stus_score,axis=1)
  9. print('每一行的最大值:',result_amax2) #[88 82 84 86 81]

指定轴最小值amin(求每一行和列的最小值)

  1. #指定轴最小值amin(求每一行和列的最小值)
  2. stus_score=np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
  3. print(stus_score)
  4. result_amin=np.amin(stus_score,axis=0)
  5. print('每一列的最小值:',result_amin)
  6.  
  7. result_amin2=np.amin(stus_score,axis=1) #[75 75]
  8. print('每一列的最小值:',result_amin2) #[80 81 75 83 75]

mean,求平均值

  1. stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
  2.  
  3. # 求每一行的平均值(0表示列)
  4. print("每一列的平均值:")
  5. result = np.mean(stus_score, axis=0)
  6. print(result) #[81.4 81.6]
  7.  
  8. # 求每一行的平均值(1表示行)
  9. print("每一行的平均值:")
  10. result = np.mean(stus_score, axis=1)
  11. print(result) #[84. 81.5 79.5 84.5 78. ]

std,求方差

  1. stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
  2.  
  3. # 求每一行的方差(0表示列)
  4. print("每一列的方差:")
  5. result = np.std(stus_score, axis=0)
  6. print(result)
  7.  
  8. # 求每一行的方差(1表示行)
  9. print("每一行的方差:")
  10. result = np.std(stus_score, axis=1)
  11. print(result)

数组运算

数组与数的运算

加法运算

  1. #数组与数的运算(加法)
  2. stus_score=np.array(([80, 88], [82, 81], [84, 75], [86, 83], [75, 81]))
  3. print(stus_score)
  4. print(stus_score[:,0]) #[80 82 84 86 75] 打印第一列的值
  5. #实现行和列的值都加5
  6. stus_score[:,0] = stus_score[:,0]+5 #每一列值加5
  7. stus_score[:,1] = stus_score[:,1]+5 #每一行值加5
  8. print(stus_score)

乘法运算

  1. #数组与数的运算(乘法)
  2. stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
  3. print("减半前:")
  4. print(stus_score)
  5. #实现行和列的值都减一半
  6. stus_score[:, 0] = stus_score[:, 0]*0.5 #每一列乘0.5
  7. stus_score[:, 0] = stus_score[:, 1]*0.5 #每一行乘0.5
  8. print("减半后:")
  9. print(stus_score)

数组与数组之间运算加减乘除运算(基本用的不多)

  1. a=np.array([1,2,3])
  2. b=np.array([10,20,30])
  3.  
  4. c=a+b
  5. d=a-b
  6. e=a*b
  7. f=a/b
  8. print(c) #[11 22 33]
  9. print(d) #[ -9 -18 -27]
  10. print(e) #[10 40 90]
  11. print(f) #[0.1 0.1 0.1]

矩阵运算

  1. 场景:假设下面每个列表代表每个学生成绩,例如,张三 平时成绩80、期末成绩88,计算每个人总成绩是多少?
  2. stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
  3.  
  4. #根据,平时成绩占40% 期末成绩占60%, 计算结果
  5. q=np.array([[0.4],[0.6]])
  6. result=np.dot(stus_score,q)
  7. print(result)
  8.  
  9. '''结果
  10. E:\python36\python3.exe C:/Python数据分析/numpy模块.py
  11. [[84.8]
  12. [81.4]
  13. [78.6]
  14. [84.2]
  15. [78.6]]
  16. '''

vstack矩阵垂直拼接

  1. #vstack矩阵垂直拼接
  2. v1=[[0,1,2,3,4,5,],
  3. [6,7,8,9,10,11]]
  4.  
  5. v2=[[12, 13, 14, 15, 16, 17],
  6. [18, 19, 20, 21, 22, 23]]
  7.  
  8. result=np.vstack((v1,v2))
  9. print('v1与v2垂直拼接结果为:',result)
  10. '''结果
  11. [[ 0 1 2 3 4 5]
  12. [ 6 7 8 9 10 11]
  13. [12 13 14 15 16 17]
  14. [18 19 20 21 22 23]]
  15.  
  16. '''

hstack矩阵水平拼接

  1. #hstack矩阵水平拼接
  2. v1=[[0,1,2,3,4,5,],
  3. [6,7,8,9,10,11]]
  4.  
  5. v2=[[12, 13, 14, 15, 16, 17],
  6. [18, 19, 20, 21, 22, 23]]
  7. result=np.hstack((v1,v2))
  8. print('v1与v2水平拼接结果为:',result)
  9. '''结果
  10. [[ 0 1 2 3 4 5 12 13 14 15 16 17]
  11. [ 6 7 8 9 10 11 18 19 20 21 22 23]]

练习题目:

题目1:对一个二维数组,选出其第一列和第二列,组成新的二维数组。

  1. res=np.array(([1,2,3],[4,5,6],[7,8,9]))
  2. print(res)
  3. print(res[:,[1,2]]) #思路第一个参数时表示去所有行,近一步然后取第1,2列
  4. '''结果为
  5. [[1 2 3]
  6. [4 5 6]
  7. [7 8 9]]
  8. [[2 3]
  9. [5 6]
  10. [8 9]]
  11.  
  12. '''

题目2:对于一个数组,选出其第1,3,4,6,7个元素,组成新的二维数组。

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

Python数据分析-Numpy数值计算的更多相关文章

  1. python数据分析Numpy(二)

    Numpy (Numerical Python) 高性能科学计算和数据分析的基础包: ndarray,多维数组(矩阵),具有矢量运算能力,快速.节省空间: 矩阵运算,无需循环,可以完成类似Matlab ...

  2. Python数据分析——numpy基础简介

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:基因学苑 NumPy(Numerical Python的简称)是高性 ...

  3. python数据分析 Numpy基础 数组和矢量计算

    NumPy(Numerical Python的简称)是Python数值计算最重要的基础包.大多数提供科学计算的包都是用NumPy的数组作为构建基础. NumPy的部分功能如下: ndarray,一个具 ...

  4. Python数据分析numpy库

    1.简介 Numpy库是进行数据分析的基础库,panda库就是基于Numpy库的,在计算多维数组与大型数组方面使用最广,还提供多个函数操作起来效率也高 2.Numpy库的安装 linux(Ubuntu ...

  5. python 数据分析----numpy

    NumPy是高性能科学计算和数据分析的基础包.它是pandas等其他各种工具的基础. NumPy的主要功能: ndarray,一个多维数组结构,高效且节省空间 无需循环对整组数据进行快速运算的数学函数 ...

  6. Python数据分析 | Numpy与1维数组操作

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/33 本文地址:http://www.showmeai.tech/article-det ...

  7. Python数据分析Numpy库方法简介(二)

    数据分析图片保存:vg 1.保存图片:plt.savefig(path) 2.图片格式:jpg,png,svg(建议使用,不失真) 3.数据存储格式: excle,csv csv介绍 csv就是用逗号 ...

  8. Python数据分析--Numpy常用函数介绍(2)

    摘要:本篇我们将以分析历史股价为例,介绍怎样从文件中载入数据,以及怎样使用NumPy的基本数学和统计分析函数.学习读写文件的方法,并尝试函数式编程和NumPy线性代数运算,来学习NumPy的常用函数. ...

  9. Python数据分析--Numpy常用函数介绍(6)--Numpy中矩阵和通用函数

    在NumPy中,矩阵是 ndarray 的子类,与数学概念中的矩阵一样,NumPy中的矩阵也是二维的,可以使用 mat . matrix 以及 bmat 函数来创建矩阵. 一.创建矩阵 mat 函数创 ...

随机推荐

  1. EF中 实现延迟加载 lazyload

    1.创建数据库 2.利用数据库 生成视图 生成2个实体类 和一个model1类 3.写代码 (1) 创建 上下文对象 (2) (3)查询结果 注释: 延迟加载的原因,因为我们操作数据库不会那么简单, ...

  2. 运行时库例程-acc_get_num_devices

    格式C 或 C++: int acc_get_num_devices( acc_device_t ); 描述例程 acc_get_num_devices 返回主机上指定类型的加速器设备数量.输入参数说 ...

  3. python解析ini文件

    python解析ini文件 使用configparser - Configuration file parser sections() add_section(section) has_section ...

  4. 在xampp修改密码

    1.选择 服务器--账号--修改密码 2.在密码 一栏输入新密码 3.刷新页面会得到如下页面 此时,该页面提醒我们检查配置文件中的主机.用户名和密码 4.打开配置文件 路径为 xampp -> ...

  5. BZOJ1008: [HNOI2008]越狱(组合数)

    题目描述 监狱有连续编号为 1…N1…N 的 NN 个房间,每个房间关押一个犯人,有 MM 种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱. ...

  6. 网上商城_数据库jar包的使用

    网上商城_数据库jar包的使用 0.导入数据库相关jar包 commons-dbutils-1.4.jar c3p0-0.9.1.2.jar 1.配置C3P0-config.xml文件 <?xm ...

  7. mac上配置java jdk环境

    访问Oracle官网 http://www.oracle.com,浏览到首页的底部菜单 ,然后按下图提示操作: 2.点击“JDK DOWNLOAD”按钮: 3.选择“Accept Lisence Ag ...

  8. python数据类型的转换

  9. 【Python 2 到 3 系列】 关于除法的余数

    v2.2 以前,除("/")运算符的返回有两种可能情况,分别是整型和浮点型.操作数的不同,是影响计算结果数据类型的关键. 以 a / b 为例,a.b均为整型,则结果返回整型:a. ...

  10. 基于form表单submit提交不跳转

    方法一:target <html> <body> <form action="" method="post" target=&qu ...