一、前言

在数据处理中,我们肯定离不开矩阵计算。那么在Python中如何操作矩阵呢?
那就有请今天的主角——numpy

二、前提准备

需要在你使用的Python解释器上,安装numpy包。
(1)Win + R

(2)然后在Windows终端中输入如下命令,回车即可。

pip install numpy

三、具体使用

1.numpy的属性

# coding:utf-8
import numpy as np
"""numpy的属性
"""# 将列表转化成一个numpy的矩阵
array = np.array([[1, 2, 3],[4, 5, 6]])
# 输出矩阵
print(array)
# 输出矩阵的维数
print("dim", array.ndim)
# 输出矩阵形状
print("shape", array.shape)
# 输出矩阵尺寸(元素总个数)
print("size", array.size)

2.numpy中的创建array

(1)矩阵和列表的区别

# coding:utf-8
import numpy as np"""输出矩阵的各种形式!!!!
"""#   矩阵输出出来,中间没有逗号;
#     而列表打印出来会有逗号
a_list = [1, 2, 3]
print(a_list)
a_np_array = np.array([1, 2, 3])
print(a_np_array)

(2)设定矩阵中数值的类型

# dtype是用来设定矩阵中数值的数据类型
a = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.int64)
print(a.dtype)
print(a)

(3)生成规定形状的、元素都为0的矩阵

# 生成3行4列的零矩阵
b = np.zeros((3, 4))
print(b)

(4)生成规定形状的、元素都为1的矩阵

# 生成数值全部是1的矩阵
c = np.ones((2,4), dtype=np.int32)
print(c)

(5)生成规定形状的、元素都为empty(实际元素都接近于0)的矩阵

# # 输出empty的矩阵
d = np.empty((3,4))
print(d)

(6)生成顺序数值的矩阵

# 输出顺序的矩阵,生成数据类比range; 从10到20,左闭右开,步长为2
e = np.arange(10, 20, 2)
print(e)

(7)修改矩阵形状

# 输出顺序的矩阵,按顺序以三行四列的格式进行输出
f = np.arange(12).reshape(3, 4)
print(f)

(8)按规定生成“线段”数值的矩阵

# 输出线段,1是起始值,10是终止值,6是生成数值个数,从1到10生成6个数,并且他们之间是等距的
# 自动匹配步长
g = np.linspace(1, 10, 6).reshape(2, 3)
print(g)

3.numpy的基础运算

(1)矩阵减法(对应元素相减)

# coding:utf-8
import randomimport numpy as np
"""numpy的基础运算
"""a = np.array([10, 20, 30, 40])
b = np.arange(4)
print("a矩阵", a)
print("b矩阵", b)
# 矩阵减法
c = a - b
print("c矩阵", c)

(2)矩阵加法(对应元素相加)

# 矩阵加法
d = a + b
print("d矩阵", d)

(3)矩阵数值平方运算

# 进行平方
e = b**2
print("e矩阵", e)

(4)矩阵各个元素求三角函数

# 调用numpy中的三角函数, sin ,cos ,tan
f = np.sin(a)
print(f)

(5)判断矩阵中哪些值是小于某个数的

# 判断矩阵中哪些值是小于3的
# 小于号可以换成其他,比如==,>
print(b)
print(b<3)

(6)矩阵之间数值逐个相乘

g = np.array([[1, 1],[0, 1]])
h = np.arange(4).reshape((2,2))print(g)
print(h)# 每个元素挨个相乘
i = g * h
print(i)

(6)矩阵乘(线性代数中的矩阵乘)

# 矩阵相乘
j = np.dot(g, h)
print(j)# 矩阵相乘的另一种形式
k = g.dot(h)
print(k)

(7)生成规定形状的随机数矩阵

# 生成随机数矩阵,(2,4)表示矩阵形状,元素值的范围是0~1
l = np.random.random((2,4))
print(l)

(8)矩阵中所有元素求和、求最大值、求最小值

# 对矩阵中的数值进行求和、求最大值、求最小值
# 矩阵中所有元素进行求和
print(np.sum(l))
# 矩阵中的最大值
print(np.max(l))
# 矩阵中的最小值
print(np.min(l))

(9)对矩阵中指定行和列进行求和、求最大值、求最小值

# 对指定行和列进行求和、求最大值、求最小值
# 其中axis参数值为0时,代表列;参数值为1时,代表行
print(np.sum(l, axis=1))
print(np.max(l, axis=0))
print(np.min(l, axis=1))

(10)求矩阵中最小值和最大值的索引

# coding:utf-8
import numpy as np
"""numpy中的运算
"""# 生成顺序数值,并设定为三行四列
A = np.arange(2, 14).reshape(3, 4)
print(A)
# 输出矩阵中数值最小的那个值所在的索引
print(np.argmin(A))
# 最大值对应的索引
print(np.argmax(A))

(11)求矩阵中元素的平均数和中位数

# 输出矩阵中的平均数
print(np.mean(A))# 另外几种形式
print(A.mean())
print(np.average(A))
# 输出矩阵中的中位数
print(np.median(A))

(12)矩阵中前几项的累计

# 矩阵中前几项的累计
print(np.cumsum(A))

(13)矩阵中元素后一项与前一项的差值

# 矩阵数值之间,每两个数值之间的差值
print(np.diff(A))

(14)以行数组和列数组,输出矩阵中非0数值

# 以行数组和列数组,输出矩阵中非0数值
print(np.nonzero(A))

(15)对矩阵进行逐行排序

B = np.array([[5, 9, 2],[1, 0, 7]])
print(B)
# 使用sort对矩阵数值进行 逐行排序
print(np.sort(B))

(16)对矩阵进行转置

# 对矩阵进行转置
print(np.transpose(A))
print(A.T)

(17)矩阵数值的“截断”

# 矩阵中小于5的值全部变成5;大于9的值全部变成9,位于5到9之间的数值,保持不变
print(np.clip(A, 5, 9))

(18)对矩阵中行元素求平均、对列元素求平均

# 对行算平均值,对列算平均值
# 参数为0是对行算平均值,参数为1是对列算平均值
print(np.mean(A, axis=0)) # 对列
print(np.mean(A, axis=1)) # 对行

4.numpy的索引

(1)通过索引输出矩阵中的对应值

# coding:utf-8
import numpy as np
"""numpy中的索引
"""
A = np.arange(3, 15).reshape((3, 4))
print(A)
# 矩阵中,指定索引的值
print(A[2])  # [11, 12, 13, 14]# 输出指定索引对应的数值
print(A[1][1]) # 8
# 也可以是这种形式进行具体索引的输出
print(A[1, 1]) # 8

(2)矩阵中的“切片”

# 打印第二行的所有数
print(A[2, :])
# 打印第一列的所有数
print(A[:, 1])# 在python中满足左闭右开的原则
print(A[1, 1:3])

(3)迭代矩阵的每一行

# 循环起来,打印行
print("#" * 20)
for row in A:print(row)

(4)迭代矩阵中的每一列

# 打印列
for column in A.T:print(column)

(5)迭代矩阵中的每一项数值(先将矩阵拉成只有一行的矩阵)

# 将矩阵拉直为一维矩阵
print(A.flatten())
# 矩阵
print(type(A.flatten()))
# 想要迭代每一个元素,需要这样
print("迭代每一个数值")
for item in A.flat:print(item)

5.numpy中array的合并

(1)两个矩阵,竖直方向上的合并

# coding:utf-8
import numpy as np
"""numpy中的合并
"""# 竖直方向上的合并
A = np.array([1, 2, 3])
B = np.array([1, 1, 1])
print(np.vstack((A, B)))
# 输出矩阵形状
print(np.vstack((A, B)).shape)

(2)两个矩阵,水平方向上的合并

# 水平方向上的合并
print(np.hstack((A, B)))
print(np.hstack((A, B)).shape) # (6,)表示一行六列的矩阵print("原来的A矩阵", A)
# 输出矩阵A的形状
print(A.shape)  # (3,)表示一行三列的矩阵

(3)给矩阵加维度

print("原来的矩阵", A)
# 给列加上维度
print(A[:, np.newaxis])
# 给行加上维度
print(A[np.newaxis, :])

(4)添加维度之后进行矩阵合并

# 当矩阵为1行是就默认为列表形式了,转置之后也是列表形式
# 比如说一行三列,转置之后仍然是一行三列
# 要想将一行三列变成三行一列,应该使用:加维度
print(A)
print(A.T)
A = np.array([1, 2, 3])[:, np.newaxis]print(A)
print(type(A))
print(A.shape)
B = np.array([1, 1, 1])[:, np.newaxis]C = np.hstack((A, B))
print("水平合并之后")
print(C)
D = np.vstack((A, B))
print("竖直合并之后")
print(D)

(5)多个矩阵的合并(自己设定竖直方向还是水平方向)

# 多个矩阵进行合并,竖直方向合并, 0代表竖直方向, 1代表水平方向
A = np.array([1, 2, 3])[:, np.newaxis]
B = np.array([1, 1, 1])[:, np.newaxis]
E = np.concatenate((A, B, A, A), axis=0)
F = np.concatenate((A, B, A, B), axis=1)
print("-" * 20)
print(E)
print("&" * 20)
print(F)

6.numpy中array的分割

(1)进行等分

# coding:utf-8
import numpy as np
"""分割矩阵
"""# 生成一个三行四列的矩阵
A = np.arange(12).reshape((3, 4))
print(A)# 对矩阵进行分割
# 第一个参数代表被分割的矩阵,第二个参数代表分割的块数,第三个参数代表分割的方向
# 0代表竖直分割,1代表水平分割
print(np.split(A, 2, axis=1))# 纵向分割成三块
print(np.split(A, 3, axis=0))

(2)进行不等分

# split只能分割成相等的,不能不等分# 使用array_split进行不等分割
print(np.array_split(A, 3, axis=1))

(3)另一种方式的分割函数的使用

# 横向纵向指的是最后如何排列的
# 或者这样理解,垂直切是在垂直方向上切的;水平切是在水平方向上切的
# 直接使用函数进行纵向分割
print("纵向分割---------------------------")
print(np.vsplit(A, 3))
# 直接使用函数进行横向分割
print("横向分割---------------------------")
print(np.hsplit(A, 2))

7. numpy中的深拷贝和浅拷贝

(1)矩阵赋值(浅拷贝)

# coding:utf-8
import numpy as np"""numpy矩阵中的深拷贝和浅拷贝
"""# 赋值,其实就还是公用一片内存
A = np.arange(5)
print("A矩阵", A)
B = A
C = A
print("B矩阵", B)
print("C矩阵", C)# 改变A中数值,因为地址相同,所以其他浅拷贝之后的矩阵也都会发生改变
A[0] = 666
print("现在的A矩阵", A)
print("现在的B矩阵", B)
print("现在的C矩阵", C)# 赋值是浅拷贝,地址其实一致
print(id(A))
print(id(B))
print(id(C))

(2)深拷贝

# 深度拷贝是,地址不一致, 新开辟了空间
D = A.copy()
print("A的地址是", id(A))
print("D的地址是", id(D))print("A矩阵", A)
print("D矩阵", D)
# 改变A矩阵,深拷贝之后,他们并不公用内容,所以互不影响
A[1] = 999
print("现在的A矩阵", A)
print("现在的D矩阵", D)

四、附录

总结完毕,撒花撒花…

Python数据分析之numpy(保姆级教程)相关推荐

  1. Python破解WIFI升级版保姆级教程,多线程破解+界面(附赠密码本)

    目录 前言 1.安装python的包 多线程破解教程 基本流程 密码本如下 完整代码如下 破解效果如下 界面版本WiFi破解 注意 代码 破解效果图如下 总结 前言 有很多小伙伴想要破解WiFi密码, ...

  2. CAN通讯-使用Python收发CAN数据保姆级教程(包含完整代码)

    CAN通讯-使用Python收发CAN数据 配置环境 1.环境配置 1.1安装CAN通讯需要的包 1.2 安装kvaser_drivers以及Kvaser CanKing 2.使用Python收发数据 ...

  3. Python爬虫之入门保姆级教程,学不会我去你家刷厕所

    注重版权,转载请注明原作者和原文链接 作者:Bald programmer 今天这个教程采用最简单的爬虫方法,适合小白新手入门,代码不复杂 文章目录 今天这个教程采用最简单的爬虫方法,适合小白新手入门 ...

  4. 保姆级教程!将 Vim 打造一个 IDE (Python 篇)

    从上周开始我就开始折腾 ,搞了一下 Vim IDE for Python & Go,我将整个搭建的过程整理成本篇文章分享出来,本篇是 Python 版本的保姆级教程,实际上我还写了 Go 版本 ...

  5. 【图解SHA1杂凑算法】SHA1杂凑算法的Python实现保姆级教程 | 物联网安全 | 信息安全

    系列索引:[图解安全加密算法]加密算法系列索引 Python保姆级实现教程 | 物联网安全 | 信息安全 起初写实验时找到的代码大多基于c/c++,python可参考的资料很少,所以借着这次实验的机会 ...

  6. 保姆级教程如何用Xcode搭建python环境

    保姆级教程如何用mac电脑中的Xcode搭建python环境(xcode12) 「mac电脑自带python2.7,你也可以更新你的python版本」 打开Xcode,点击file-new-proje ...

  7. 天才少年稚晖君 | 【保姆级教程】个人深度学习工作站配置指南

    天才少年稚晖君 | [保姆级教程]个人深度学习工作站配置指南 来源:https://zhuanlan.zhihu.com/p/336429888 0. 前言 工作原因一直想配置一台自己的深度学习工作站 ...

  8. AI绘图–Disco Diffusion使用指南+本地化保姆级教程

    文章封面为个人AI绘图训练结果 项目传送门:传送门 (谷歌警告) 该项目为免费使用的AI绘图项目,并且可以在本地搭建部署环境. AI绘图对于人脸处理仍处于较为实现困难的阶段,因此该项目更适合用于各类场 ...

  9. 数仓建设保姆级教程,离线和实时一网打尽(理论+实战)

    本文大纲: 因内容较多,带目录的PDF查看是比较方便的,点击下方链接获取完整PDF版: 数仓建设保姆级教程PDF文档 一.数仓基本概念 1. 数据仓库架构 我们在谈数仓之前,为了让大家有直观的认识,先 ...

  10. zeppelin安装和配置(保姆级教程)

    zeppelin简单介绍: Zeppelin是一个基于Web的notebook,提供交互数据分析和可视化.支持多种数据引擎,如hive.spark等.还支持多种编程语言,如python.Scala等. ...

最新文章

  1. Linux压缩命令总结
  2. 这家公司耕耘超算20年,连续3年世界第一,现在加速中国AI
  3. 关于Async与Await的FAQ
  4. QT中实现QLineEdit变成圆角以及QCombox大半空白,小部分下拉框样式
  5. DL之GD:利用LogisticGD算法(梯度下降)依次基于一次函数和二次函数分布的数据集实现二分类预测(超平面可视化)
  6. MySQL数据库管理(二)单机环境下MySQL Cluster的安装
  7. Spring原始注解开发-02
  8. Windows NT OS 的技术架构图
  9. Anaconda安装第三方包(whl文件)
  10. 【快讯】阿里云张建锋:数据成为经济发展的新生产要素
  11. c语言 在歌星大奖赛,C语言 歌星大奖赛为参赛的选手打分
  12. oracle怎样避免脑裂的,redis集群怎么防止脑裂
  13. python判断字符串中[提取、判断只含有、判断不含有]中文
  14. 东大oj-1591 Circle of friends
  15. 学英语专业后悔了_上大学一定不要读英语专业?当年志愿填报我选了英语专业...
  16. MD5和AES加密的处理
  17. Unity Shader入门精要--第4 章 学习Shader 所需的数学基础:矩阵
  18. java模仿滴滴的程序_小程序模仿滴滴打车
  19. 心形线(Java语言实现) 原理与具体实现
  20. 编程队伍队名_关于举办十四所第四届“国睿杯”青年软件技能编程大赛的通知...

热门文章

  1. markdown编辑简介
  2. ARP、RARP、免费ARP、代理ARP
  3. 微信内测“话题”、付费阅读功能改代码即可“实现
  4. UDP可靠性传输-QUIC
  5. 火绒怎么修复dll文件丢失?
  6. 2022 IDC报告出炉 思腾合力一举拿下全国服务器市场双项榜单
  7. 在外卖平台也能当主播,美团直播到底“行不行”?
  8. 计算机对等网络的组建,两台电脑对等网组建连接教程
  9. 青岛市城阳区2019年信息技术结业考试题目
  10. 中值滤波原理及其C++实现与CUDA优化