目录

  • numpy模块

    • 一维数组
    • 二维数组(用的最多的)
    • 获取多维数组的行和列
    • 多维数组的索引
    • 高级功能
    • 多维数组的元素的替换
    • 通过函数方法创建多维数组
    • 矩阵的运算
    • 点乘和转置(了解) 点乘必须 m*n n *m
    • 求逆(了解)
    • 最大 小值
    • numpy生成随机数

numpy模块

回顾一下有哪些数据类型

int/float/str/list/tuple/dict/set

numpy是python一种开源的数值计算扩展库.这种库可用来存储和处理大型矩阵,比python自身的嵌套列表结构要高效的多(该结构也可以用来表示矩阵)

作用:
1.区别于list列表,提供了数组操作、数组运算、以及统计分布和简单的数学模型
2.计算速度快,甚至优于python内置的简单运算,使其成为pandas、sklearn等模块的依赖包。高级的框架如TensorFlow、PyTorch等,其数组操作也和numpy非常相似

矩阵即numpy的np.array对象,创建矩阵就是把==列表==传入np.array()

import numpy as np

一维数组

  • 只有一行
  • 相当于一条直线
lis =[1,2,3]
lis
[1, 2, 3]
np.array(lis)
array([1, 2, 3])

二维数组(用的最多的)

  • 有行有列
  • 相当于一个面,里面有多条线,一个列表里装了多个一维
arr = np.array([  [1,2,3,4],   [5,6,7,8]  ])
arr  #在pycharm中需要print(arr)
array([[1, 2, 3, 4],[5, 6, 7, 8]])

学习numpy的方法使用,先来联想一下list的内置方法使用
1.索引
2.切片
3.长度
4.成员运算
5.for循环
6.其他一些内置方法

比较一下 np.array 和 list 的区别
1.np.array是多维的,list是一维的
2.list对一维数组做一些操作,numpy其实就是对多维做操作

获取多维数组的行和列

arr =np.array([ [1,2,3,4],[5,6,7,8],[5,6,7,8]])
arr
array([[1, 2, 3, 4],[5, 6, 7, 8],[5, 6, 7, 8]])
arr.shape #获得多维数组的行和列,以元组形式表现出来
(3, 4)
arr.shape[0] #多维数组的行
3
arr.shape[1] #多维数组的列
4
print(arr.shape)
print(arr.shape[0])
arr.shape[1]
(3, 4)
34
arr.shape
arr.shape[1]
arr.shape[0]
3

arr.shape ,按照代码运行,直接运行最后一个结果显示处理,用print方法就可以把每一个方法打印出来

多维数组的索引

lis = [1,2,3,4]
#lis[-1]
lis[3]
4
arr
array([[1, 2, 3, 4],[5, 6, 7, 8],[5, 6, 7, 8]])

arr #jupyter中前面运行的结果可以直接用,如果前面arr未运行生成,就会报错

  • 中括号中加索引,行和列用逗号分开,可以取到数组中的数
arr[1,1] #  行和列索引都从0开始,取第2行第2列
6
arr[0,[0,1,2,3]] #第一行,第1,2,3,4列的数
array([1, 2, 3, 4])
arr[0,:] #第一行,第1,2,3,4列的数
array([1, 2, 3, 4])
arr[0:] #没有逗号的时候取出了全部
array([[1, 2, 3, 4],[5, 6, 7, 8],[5, 6, 7, 8]])
arr[:,0] #所有行,第1列的数
array([1, 5, 5])

高级功能

  • 有一个多维数组存储的是人的年龄,表格里有200岁以上的年龄
arr = np.array([ [1000,2,300,4],[5,600,7,8],[5,6,700,8]])
arr
array([[1000,    2,  300,    4],[   5,  600,    7,    8],[   5,    6,  700,    8]])
arr>200 
array([[ True, False,  True, False],[False,  True, False, False],[False, False,  True, False]])
arr[arr>200] #取出数组中大于200的元素,并一维数组表现出来
array([1000,  300,  600,  700])

多维数组的元素的替换

lis =[1,2,3,4]
lis[0]=9
lis
[9, 2, 3, 4]
arr
array([[1000,    2,  300,    4],[   5,  600,    7,    8],[   5,    6,  700,    8]])
arr[1,1]=0
arr
array([[1000,    2,  300,    4],[   5,    0,    7,    8],[   5,    6,  700,    8]])
arr[0,:]=0
arr
array([[  0,   0,   0,   0],[  5,   0,   7,   8],[  5,   6, 700,   8]])
arr = np.array([ [1000,2,300,4],[5,600,7,8],[5,6,700,8]])
arr
array([[1000,    2,  300,    4],[   5,  600,    7,    8],[   5,    6,  700,    8]])
arr[arr>200]=0  #数组中大于200的数替换成了0
arr
array([[0, 2, 0, 4],[5, 0, 7, 8],[5, 6, 0, 8]])
## 多维数组的合并
arr1=np.array([ [1,2,3,4],[5,6,7,8]])
arr1
array([[1, 2, 3, 4],[5, 6, 7, 8]])
arr2=np.array([ [9,10,11,12],[13,14,15,16]])
arr2
array([[ 9, 10, 11, 12],[13, 14, 15, 16]])
* vstack 和 hstack 只能放一个参数,这个参数必须是容器
np.vstack((arr1,arr2)) #vertical 垂直新的
array([[ 1,  2,  3,  4],[ 5,  6,  7,  8],[ 9, 10, 11, 12],[13, 14, 15, 16]])
np.hstack((arr1,arr2))  #horizon 水平的
array([[ 1,  2,  3,  4,  9, 10, 11, 12],[ 5,  6,  7,  8, 13, 14, 15, 16]])
np.concatenate((arr1,arr2)) # concatenate 连接的意思,默认垂直合并
array([[ 1,  2,  3,  4],[ 5,  6,  7,  8],[ 9, 10, 11, 12],[13, 14, 15, 16]])

==在numpy中,为了统一做处理,只要有axis参数的,axis=0就是列,axis=1就是行

np.concatenate((arr1,arr2),axis=1) #水平
array([[ 1,  2,  3,  4,  9, 10, 11, 12],[ 5,  6,  7,  8, 13, 14, 15, 16]])
np.concatenate((arr1,arr2),axis=0)#垂直,默认垂直
array([[ 1,  2,  3,  4],[ 5,  6,  7,  8],[ 9, 10, 11, 12],[13, 14, 15, 16]])

通过函数方法创建多维数组

[i for i in range(10)]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.arange(1,10,2)
array([1, 3, 5, 7, 9])
# ones
np.ones((3,4)) #默认是浮点型
# np.ones((3,4),dtype=int)
array([[1., 1., 1., 1.],[1., 1., 1., 1.],[1., 1., 1., 1.]])
np.ones((3,4),dtype=int)
# zeros
np.zeros((3,4))
array([[0., 0., 0., 0.],[0., 0., 0., 0.],[0., 0., 0., 0.]])
np.zeros((3,4,5)) #5控制一维,4,5控制二维,3,4,5控制三维
array([[[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.]],[[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.]],[[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.]]])
np.zeros((3,4,5))
array([[[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.]],[[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.]],[[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.]]])
## eye
np.eye(5) #5,5 5行和5列
array([[1., 0., 0., 0., 0.],[0., 1., 0., 0., 0.],[0., 0., 1., 0., 0.],[0., 0., 0., 1., 0.],[0., 0., 0., 0., 1.]])

矩阵的运算

  • 两个矩阵对应元素相加
  • 两个矩阵对应元素相减
  • 两个矩阵对应元素相乘
    / 两个矩阵对应元素相除,如果都是整数则取商
    % 两个矩阵对应元素相除后取余数
    n 单个矩阵每个元素都取n次方,如2:每个元素都取平方
arr1
array([[1, 2, 3, 4],[5, 6, 7, 8]])
arr2
array([[ 9, 10, 11, 12],[13, 14, 15, 16]])
arr1+arr2
array([[10, 12, 14, 16],[18, 20, 22, 24]])
arr1*2
array([[ 2,  4,  6,  8],[10, 12, 14, 16]])

点乘和转置(了解) 点乘必须 m*n n *m

arr1
array([[1, 2, 3, 4],[5, 6, 7, 8]])
arr2
array([[ 9, 10, 11, 12],[13, 14, 15, 16]])
np.dot(arr1,arr2.T)
array([[110, 150],[278, 382]])

求逆(了解)

np.linalg.inv(np.dot(arr1,arr2.T))
array([[ 1.19375, -0.46875],[-0.86875,  0.34375]])

最大 小值

arr1
array([[1, 2, 3, 4],[5, 6, 7, 8]])
arr1.max()
8
arr1.min()
1

numpy生成随机数

固定随机数,让它不随机

np.random.rand(3,4)
array([[0.20445225, 0.87811744, 0.02738759, 0.67046751],[0.4173048 , 0.55868983, 0.14038694, 0.19810149],[0.80074457, 0.96826158, 0.31342418, 0.69232262]])
np.random.seed(1) #永不随机,固定,如果不加,每运行一次结果都不一样
np.random.rand(3,4)
array([[4.17022005e-01, 7.20324493e-01, 1.14374817e-04, 3.02332573e-01],[1.46755891e-01, 9.23385948e-02, 1.86260211e-01, 3.45560727e-01],[3.96767474e-01, 5.38816734e-01, 4.19194514e-01, 6.85219500e-01]])
rs =np.random.RandomState(1) #第二种方法
rs.rand(3,4)
array([[4.17022005e-01, 7.20324493e-01, 1.14374817e-04, 3.02332573e-01],[1.46755891e-01, 9.23385948e-02, 1.86260211e-01, 3.45560727e-01],[3.96767474e-01, 5.38816734e-01, 4.19194514e-01, 6.85219500e-01]])

转载于:https://www.cnblogs.com/geyatou322/p/11012088.html

python numpy模块相关推荐

  1. Python~NumPy模块一站式教程,稳稳拿捏(持续更新ing)

    一.Numpy模块 基础 1. 介绍 NumPy的核心是多维数组类numpy.ndarray,矩阵类numpy.matrix是多位数组类的派生类.以多位数组类为数据组织结构,Numpy提供了众多的数学 ...

  2. 【Python numpy模块】结合金融场景演示numpy模块的操作

    ##基本操作 输入数组,对数组进行切片和索引 ##本篇文章所有操作展示均在spyder命令行窗口 股票简称 2018年9月3日 2018年9月4日 2018年9月5日 2018年9月6日 2018年9 ...

  3. python numpy 数据类型为python对象-python numPy模块 与numpy里的数据类型、数据类型对象dtype...

    学习链接:http://www.runoob.com/numpy/numpy-tutorial.html 简介: numPy是python语言的一个扩展库,是一个运行非常快的数学库,主要用于数组计算. ...

  4. numpy randn 和_人生苦短,自学python——numpy模块

      numpy.pandas.matplotlib.sklearn是python机器学习领域,最核心的几个模块,玩转了这几个模块也就玩转了机器学习,其中,numpy又是这几个模块中最基础的模块. 内置 ...

  5. python Numpy模块汇总(字母排序) 备注:内容很多,用control/command(Mac系统)+ F可以在网页内关键词查找,希望你能找到想要的内容

    @[TOC] (目录) Numpy Numpy官网:https://numpy.org/devdocs/index.html Numpy的主要对象是同构多维数组.它是一个元素表(通常是数字),所有类型 ...

  6. Python—numpy模块下函数介绍(一)numpy.ones、empty等

    NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推.在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量.比如说,二维数组相当于是一个一维数 ...

  7. python numpy.ones(shape, dtype=None, order=’C’) empty(shape[, dtype, order]) empty_like(a) 空数组 全1数组

    ones(shape[, dtype, order]) 依据给定形状和类型(shape[, dtype, order])返回一个新的元素全部为1的数组. def ones(shape, dtype=N ...

  8. python导入模块的三种方法,例子: import numpy和from numpy import * (import matplotlib 和 from matplotlib import *)

    python导入模块有如下几种写法:以matplotlib为例 (跟numpy是一样的) 1,import matplotlib #整个导入matplotlib 2 , from matplotlib ...

  9. python安装numpy-Python使用pip安装Numpy模块

    安装Numpy模块一般有两种安装方法: 一:下载模块对应的.exe文件,直接双击运行安装 二:下载模块对应的.whl文件,使用pip安装 对于exe文件的安装比较简单,都是双击运行,这里就不说了. 这 ...

最新文章

  1. python编程实例视屏-python爬视频实例
  2. 20162328蔡文琛week07
  3. 一个简单的HTTP通讯的例子,使用了CInternetSession,CHttpConnection,CHttpFile三个类
  4. 项目质量管理:质量与质量管理概念
  5. linux系统下怎么修改sshd端口?
  6. halo多人正在连接服务器,在线人数过低 《光晕2》PC版多人服务器下月关闭
  7. 剑指offer第七天
  8. ad域 禁用账号_AD域撤销域用户管理员权限方案
  9. 闲聊人工智能产品经理(AIPM)—人工智能产品体系
  10. 【Materials Studio学习七】构建石墨烯
  11. 2021-泛微OA V8 SQL注入漏洞
  12. banner图第三版
  13. 无限天空服务器,滚动的天空无限钻石无限金币版
  14. OA/CRM/ERP 权限管理系统设计 - bg.work办公开源实现
  15. w8系统桌面没有计算机图标,不见了win8系统桌面图标怎么办
  16. 应试教育中的孩子长不好
  17. android 仿微信顶部消息 展示
  18. 3D MAX 入门教程内容结构
  19. EndNote20 【无法编辑Range】解决办法
  20. 吴京砸向MOSS的伏特加,被做成了串口助手

热门文章

  1. Docker学习笔记 — Docker私有仓库搭建
  2. LAMP 架构深度优化记录
  3. Python之字符编码(Day10)
  4. 多态指针访问虚函数不能被继承的类快速排序N皇后问题插入排序堆排序merge归并排序栈上生成对象两个栈实现一个队列...
  5. Nagios+Cacti+Nconf配置
  6. Verilog 流水线加法器
  7. Windows中安装Apache2和PHP4权威指南
  8. matlab与acess连接问题
  9. 奶粉中含PHP作用,奶粉中的益生菌有什么作用
  10. etcd 日志压缩_etcd集群备份和数据恢复以及优化运维