数据分析之NumPy(五)数组间运算

数组与数的运算

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

数组与数组的运算

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]])

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

尝试如下操作呢?

a = np.arange(10).reshape((2,5))
b = np.arange(10,20).reshape((2,5))
a+b

接下来就需要引入数组间操作的规则:广播机制

广播(broadcast)机制

执行 broadcast 的前提在于,两个 ndarray 执行的是 element-wise的运算,Broadcast机制的功能是为了方便不同形状的ndarray(numpy库的核心数据结构)进行数学运算。

当操作两个数组时,numpy会逐个比较它们的shape(构成的元组tuple),只有在下述情况下,两个数组才能够进行数组与数组的运算。

  • 维度相等
  • shape(其中相对应的一个地方为1)

    广播机制的目的在于:把不同形状的两个阵列变成相同

    上述(2,1,4)与(3,1)中,从尾部算起,其中第一个数组的末位4,第二个数组的末位为1,符合广播机制中的相对应的一个地方为1,依次往前位数类推,两个数组满足广播机制,所以可以进行运算
    再例如:

Image (3d array):  256 x 256 x 3
Scale (1d array):              3
Result (3d array): 256 x 256 x 3

A      (4d array):  9 x 1 x 7 x 1
B      (3d array):      8 x 1 x 5
Result (4d array):  9 x 8 x 7 x 5

A      (2d array):  5 x 4
B      (1d array):      1
Result (2d array):  5 x 4

A      (2d array):  15 x 3 x 5
B      (1d array):  15 x 1 x 1
Result (2d array):  15 x 3 x 5

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

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]])

arr1形状为:(2,6),arr2形状为:(2,1)

矩阵运算

现在思考如下的学生成绩问题:

思考:如何能够直接得出每个学生的成绩?

什么是矩阵

矩阵,英文matrix,和array的区别矩阵必须是2维的,但是array可以是多维的。

  • np.mat()
    将数组转换成矩阵类型

矩阵乘法运算

矩阵乘法的两个关键:

  • 形状改变
  • 运算规则
    形状改变:

    必须符合上面的式子,否则运算出错。
    运算规则:

    矩阵乘法api:

    -np.matmul
    -np.dot

矩阵应用场景

大部分机器学习算法需要用到

版权声明:
笔者博客文章主要用来作为学习笔记使用,内容大部分整理自互联网,如有侵权,请联系博主删除!

(0)

相关推荐

  • Python数据分析库-Numpy库在数据分析中的知识点(一)

    各位客官姥爷好,欢迎回来.细心的你们肯定发现在pandas知识点(二)一文中用到了numpy库,numpy库也是我们这些数据人经常用的python库之一,那么numpy又有哪些知识点呢?我们本节先来看 ...

  • 人工智能基础课堂纪要2

    3.3 常见图形绘制[*] 1.折线图 -- plt.plot 变化 2.散点图 -- plt.scatter() 分布规律 3.柱状图 -- plt.bar 统计.对比 4.直方图 -- plt.h ...

  • Pandas和NumPy的比较

    我们知道Pandas是在NumPy的基础构建而来,因此,熟悉NumPy可以更加有效的帮助我们使用Pandas. NumPy主要用C语言编写,因此,在计算还和处理一维或多维数组方面,它要比Python数 ...

  • 5张数据分析表(五):如何分析渠道投放效果并优化投放创意

    诸葛君说:通过SEM.信息流等形式投放广告后,如何分析投放效果?怎么看出渠道质量?单纯统计一个渠道转化ROI,知道单个用户转化成本,其实并没有什么用.本文通过1张图表,从17个维度分析各渠道投放的效果 ...

  • 七种常见的数据分析法(五):帕累托法则

    什么是帕累托法则? 帕累托法则其实就是我们常说的二八法则,经济学定律中说80%的财富掌握在20%的人手中,而在运营中可以发现,80%的贡献度来自于20%的用户. 这张图中体现了2个法则,也就是二八法则 ...

  • 数组运算6(方向不同的一维数组的运算)

    今天来说数组运算的最后一种运算方式,方向不同的一维数组间的运算,也就是横向一维数组与纵向一维数组的运算. -01- 运算规则 如下图所示,是一维纵向数组与横向数组的连接运算.它们运算的结果是一个二维数 ...

  • 数组运算5(一维数组与二维数组的运算)

    之前我们说了一维数组与一维数组的运算,二维数组与二维数组的运算,今天来说一维数组与二维数组的运算. -01- 运算规则 1.行数或列数相同的一维数组与二维数组的运算 如下图所示,是一维区域与二维区域的 ...

  • 数组运算4(二维数组与二维数组的运算)

    接着来说数组的运算,今天是二维数组与二维数组的运算. -01- 运算规则 1.尺寸相同的二维数组的运算. 如下图所示,将2个二维区域进行相加运算,结果输出到黄色区域.可以看到它们的运算规则也是一一对应 ...

  • 数组运算2(方向相同的一维数组的运算)

    今天来说方向相同的一维数组和一维数组的运算,也就是要么都是横向,要么都是纵向. -01- 运算规则 1.横向一维数组的运算 如下图所示,将A1:D1这个区域和A2:D2这个区域相加,结果输出到A4:D ...

  • 【今天一谜210530】必须五七间

    必须五七间(党史人,卷帘格)[不需任何符号,直接回复谜底即可]★欢迎进入主贴底部评论.拍砖.赞赏.谢谢您的支持!下期揭底,公开作者★ 喜欢那申城学生(5字情感经历,含潮阳地名)爱上海门人作者:陈德生( ...

  • 第79天:数据分析之 Numpy 初步

    NumPy 是 Python 中一个基本的科学计算库,包含以下特性: 强大的 N 维数组对象: 精巧的广播(broadcasting)功能: C/C++ 和 Fortran 代码集成工具: 实用的线性 ...

  • 第 110 天:Numpy 中数组和矩阵的区别

    不知道你是否跟我有同样的疑惑,就是 Numpy 科学计算库中既可以创建数组,也可以创建矩阵,这两者究竟有哪些相似与不同之处呢?下面我们一起来解开这个疑惑. 1 创建方式 我们先来看一下三个例子. 应用 ...