专栏首页锦小年的博客Python数据分析(6)-numpy广播机制

Python数据分析(6)-numpy广播机制

numpy的广播机制旨在提供一种当被处理数组维度大小不一样时仍然能计算的机制。首先要明白,在数组(或者说是向量,数组的本质就是多维向量的组合)计算时,除了一些特殊的计算(点乘等),其他操作都是元素一一对应的操作,它要求被处理的数组的维度以及每个维度大小相等。但是,许多计算中,想要一个维度对其他所有维度操作,此时被操作的数组的大小不一样,但numpy采用广播机制来处理这个问题。

import numpy as np 
a = np.arange(16)
a.shape=(4,4)
print('a 数据为:',a)
b = np.array([1,2,3,4])
print('b 数组为:',b)

print('a+b 的结果是:',a+b)

输出结果:

a 数据为: 
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
b 数组为: [1 2 3 4]
a+b 的结果是: 
[[ 1  3  5  7]
 [ 5  7  9 11]
 [ 9 11 13 15]
 [13 15 17 19]]

事实上,它是把b变成a的维度大小,也就是将[1,2,3,4] 复制4次并增加一个维度:

[[1 2 3 4]
[1 2 3 4]
[1 2 3 4]
[1 2 3 4]]

再与a对应元素相加。 同样,我们把加变为乘(这里的乘是叉乘,对应元素的乘积)

import numpy as np 
a = np.arange(16)
a.shape=(4,4)
print('a 数据为:',a)
b = np.array([1,2,3,4])
print('b 数组为:',b)

print('a*b 的结果是:',a*b)

输出:

a 数据为: 
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
b 数组为: [1 2 3 4]
a*b 的结果是: 
[[ 0  2  6 12]
 [ 4 10 18 28]
 [ 8 18 30 44]
 [12 26 42 60]]

最后,说一说numpy广播机制的原理,如图所示:

在操作的过程中,先把小维度的数据变为大维度数组的维度,图中将b的第一行复制4次组成与a一样的大小再操作。

notes 在实际使用中需要灵活使用,但同时也要注意该机制可能带来的误操作,例如代码写错但仍能得到结果。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python数据分析(7)-numpy数组操作

    本节主要介绍numpy中在数组上的一些常规操作,在数组级别上包括数组迭代,数组拼接、数组分割,在元素级别包括元素迭代、元素增加、元素删除等。 本节的内容比较...

    锦小年
  • Python数据分析(3)-numpy中nd数组的创建

    1、ndarray的内存结构 和其他的库一样,每个库都可能有自己独特的数据结构,例如OpenCV,numpy库的多维数组叫做ndarray( N dimensi...

    锦小年
  • python学习笔记7.3-内建模块collections

    Python的内建模块collections为我们提供了一系列的优化操作,本质上就是元组、字典、集合、列表的特殊功能版。 1. namedtuple name...

    锦小年
  • 我的Python分析成长之路8

    Numpy:是Numerical Python的简称,它是目前Python数值计算中最为基础的工具包,Numpy是用于数值科学计算的基础模块,不但能够完成科学...

    py3study
  • Python必备基础:这些NumPy的神操作你都掌握了吗?

    本文简单介绍NumPy模块的两个基本对象ndarray、ufunc,介绍ndarray对象的几种生成方法及如何存取其元素、如何操作矩阵或多维数组、如何进行数据合...

    华章科技
  • Python数据分析之NumPy(基础篇)

    Numpy 的核心是ndarray对象,这个对象封装了同质数据类型的n维数组。起名 ndarray 的原因就是因为是 n-dimension-array 的简写...

    AI异构
  • NumPy入门指南(一) | Day1

    今明两天我们主要学习NumPy,NumPy是用Python做数据分析时不可或缺的一个库,想知道它怎么使用吗?快往下看吧!(ps:课程内容较多,大家坚持住哦!)

    DataScience
  • NumPy入门指南(二) | Day2

    数组的索引就是列表中的下标,来表明数组中元素的顺序位置;通过查询索引可以获取到想要的元素, 切片是截取到需要元素的集合。

    DataScience
  • 小蛇学python(11)初窥numpy

    读者可以自行输入,观看结果,享受编码的乐趣。注意zeros和ones后面是跟了两组小括号的。

    用户2145057
  • python下之numpy操作

    t5 = np.array([1, 1, 0, 1, 1], dtype=bool)

    用户7886150

扫码关注云+社区

领取腾讯云代金券