当前位置: 首页 > news >正文

【Numpy数据运算】数组间运算

1 数组与数的运算

arr = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])
arr + 1
arr / 2
# 可以对比python列表的运算,看出区别
a = [1, 2, 3, 4, 5]
a * 3

2 数组与数组的运算

arr1 = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])
arr2 = np.array([[1, 2, 3, 4], [3, 4, 5, 6]])

上面这个能进行运算吗,结果是不行的!

2.1 广播机制

数组在进行矢量化运算时,要求数组的形状是相等的。当形状不相等的数组执行算术运算的时候,就会出现广播机制,该机制会对数组进行扩展,使数组的shape属性值一样,这样,就可以进行矢量化运算了。下面通过一个例子进行说明:

arr1 = np.array([[0],[1],[2],[3]])
arr1.shape
# (4, 1)
arr2 = np.array([1,2,3])
arr2.shape
# (3,)
arr1+arr2
# 结果是:
array([[1, 2, 3],[2, 3, 4],[3, 4, 5],[4, 5, 6]])

上述代码中,数组arr1是4行1列,arr2是1行3列。这两个数组要进行相加,按照广播机制会对数组arr1和arr2都进行扩展,使得数组arr1和arr2都变成4行3列。

下面通过一张图来描述广播机制扩展数组的过程:

在这里插入图片描述

这句话乃是理解广播的核心。广播主要发生在两种情况,一种是两个数组的维数不相等,但是它们的后缘维度的轴长相符,另外一种是有一方的长度为1。

广播机制实现了时两个或两个以上数组的运算,即使这些数组的shape不是完全相同的,只需要满足如下任意一个条件即可。

  • 如果两个数组的后缘维度(trailing dimension,即从末尾开始算起的维度)的轴长度相符
  • 其中的一方的长度为1

广播会在缺失和(或)长度为1的维度上进行。

广播机制需要扩展维度小的数组,使得它与维度最大的数组的shape值相同,以便使用元素级函数或者运算符进行运算。

如果是下面这样,则不匹配:

A  (1d array): 10
B  (1d array): 12
A  (2d array):      2 x 1
B  (3d array):  8 x 4 x 3

思考:下面两个ndarray是否能够进行运算?

arr1 = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])
arr2 = np.array([[1], [3]])

3 小结

  • 数组运算,满足广播机制,就OK【知道】
    • 1.维度相等
    • 2.shape(其中对应的地方为1,也是可以的)
http://www.dtcms.com/a/601565.html

相关文章:

  • discuz修改网站底部网站建设平台推荐
  • 大型 GPU 服务集群监控方案(>50 节点)
  • 从零到一:编写一个简单的 Umi 插件并发布到 npm
  • 企业做网站的费用如何科目邢台哪个公司做网站好
  • R语言编译器使用技巧与常见问题
  • 国内哪家网站做的系统纯净南京网站开发荐南京乐识
  • 网站建设单选题wordpress新手教程
  • 白牌笔记本电脑制造商能提供哪些定制服务?
  • ubuntu 22.04 升级openssh默认版本8.9p1 到10.1p1
  • User Prompt 与 System Prompt:大模型沟通的“双引擎”机制深度拆解
  • 在Anaconda Prompt完成模型训练
  • AR党建互动台-VR智慧党建沙盘-AR党建识别桌
  • 济宁做网站的大连建设
  • 建设银行新版网站上线免费网站如何赚钱
  • [Linux]学习笔记系列 -- [kernel]kthread
  • 网站开发备案帮企业做网站
  • 链盾shieldchain | 数据库、用户注册、登录、标识查询、商业软件申请和处理、消息
  • C++ set 容器:有序唯一元素集合的深度解析与实战
  • 前端的dist包放到后端springboot项目下一起打包
  • Swift 6.2 列传(第六篇):内存安全的 “峨眉戒令”
  • 毕设用别人网站做原型企业英语培训哪里好
  • 网站排名优化系统百度竞价什么意思
  • 网站群项目建设实施进度计划衡水网站建设电话
  • 【自然语言处理】基于混合基的句子边界检测算法
  • 快快测(KKCE)TCping 检测全面升级:IPv6 深度覆盖 + 多维度可视化,重构网络性能监测新体验
  • 句容网站移动互联网软件开发
  • vs编译c语言 | 详细解析如何配置与调试Visual Studio环境
  • 浙江火电建设有限公司网站营销策划公司名字简单大气
  • 自动驾驶与联网车辆网络安全:系统级威胁分析与韧性框架
  • 野火fpga笔记