关于np.subtract.outer()的使用,以下做简单介绍

import numpy as npa = np.array([5,6,7])
b = np.array([9,12,10])np.subtract.outer(b,a)
Out[11]:
array([[4, 3, 2],[7, 6, 5],[5, 4, 3]])

上述代码或许之前没接触np.subtract.outer()的人会晕住,这是什么情况?似乎没有规律可言,其实是有的
请看,

9 - 5 = 4
9 - 6 = 3
9 - 7 = 2

12 - 5 = 7
12 - 6 = 6
12 - 7 = 5

10 - 5 = 5
10 - 6= 4
10 - 7= 3

你看懂了吗?
用代码来写就是:
其实,上面三行等价于:

b[:,None]-a
array([[4, 3, 2],[7, 6, 5],[5, 4, 3]])

关于b[:,None]-a

b[:,None]
Out[13]:
array([[ 9],[12],[10]])'''
利用numpy数组的广播特性实现
b[:,None]中的每个值减去a中的每个值
'''

也就是:

np.subtract.outer(b,a)是b[:,None]-a的函数对应
其含义是:

有两个向量ab,要实现a中的每个元素与b中的每个元素进行比较

learn from:在python中用两个向量构建一个比较矩阵


代码1:

A = np.array([3,2,1])
B = np.array([3,4,5])
#方法1
print(b[:,None]-a)#方法2
print(np.subtract.outer(B,A))[[0 1 2][1 2 3][2 3 4]]*****************************************************
calculation idea:3  2  1-
3   0  1  2
4   1  2  3
5   2  3  4

代码2:

A = np.arange(3).reshape(3,1)
B = np.arange(3).reshape(1,3)#方法1
print(A+B)#方法2,使用迭代器
it = np.nditer([A,B,None])
for x,y,z in it: z[...] = x + y
print(it.operands[2])[[0 1 2][1 2 3][2 3 4]]*****************************************************
calculation idea:0  1  2+
0    0  1  2
1    1  2  3
2    2  3  4

关于代码1和代码2:

  • 代码1

    • B中的每个元素减去A中每个元素的值
  • 代码2
    • A中的每个元素的值加上B中每个元素的值

np.subtract.outer()相关推荐

  1. pandas 转化np数据_利用Python进行数据分析(语法篇)

    一.数据 结构化数据: 1.多维数组--矩阵 2.表格型数据(关系型数据库中的数据) 3.通过关键列相连接的表 4.间隔平均或者不平均的时间序列 二.关于iPython 三.Numpy学习 numpy ...

  2. python创建一个类似于国家象棋棋盘的0-1矩阵_NumPy练习题(全中文并附详细讲解)...

    100道 numpy 练习 1. Import the numpy package under the name np (★☆☆)') 导入numpy模块,设置别称为np import numpy a ...

  3. numpy练习100道题

    # -*- coding: utf-8 -*- """ Created on Fri Nov 8 10:17:18 2019@author: lenovo "& ...

  4. 语音处理入门——语音的声学处理

    语音的声学处理通常称为特征提取或者信号分析,特征是表示语音信号的一个时间片的矢量.常见的特征类型有LPC(线性预测编码)特征和PLP(感知线性预测编码),该特征称为声谱特征,使用形成波形的不同频度的分 ...

  5. NumPy Cookbook 带注释源码 六、NumPy 特殊数组与通用函数

    # 来源:NumPy Cookbook 2e ch6 创建通用函数 from __future__ import print_function import numpy as np# 我们需要定义对单 ...

  6. dataframe修改数据_利用Python进行数据分析(语法篇)

    一.数据 结构化数据: 1.多维数组--矩阵 2.表格型数据(关系型数据库中的数据) 3.通过关键列相连接的表 4.间隔平均或者不平均的时间序列 二.关于iPython 三.Numpy学习 numpy ...

  7. NumPy进阶教程——超详细

    Numpy基础教程: https://blog.csdn.net/qq_43328040/article/details/106601065 ----------------------------- ...

  8. [转]numpy 100道练习题

    100 numpy exercise 翻译:YingJoy 网址: https://www.yingjoy.cn/ 来源:https://github.com/rougier/numpy-100 Nu ...

  9. 给出如下公式的python表达式7+9i+2xcos66_这100道练习,带你玩转Numpy

    转自:Datawhale Numpy是Python做数据分析所必须要掌握的基础库之一.以下为入门Numpy的100题小练习,原为github上的开源项目,由和鲸社区的小科翻译并整理(保留了部分原文作为 ...

最新文章

  1. python 在无网络环境下安装包
  2. 报错解决:undefined reference to `snappy::MaxCompressedLength(unsigned long)'
  3. nodejs使用redis数据库缓存数据
  4. 增加XP的IIS连接数,解决403.9连接用户过多的问题
  5. 理解吞吐量和停顿时间
  6. 巧用PowerShell维护Win2008服务器作业
  7. 数据结构——模式匹配kmp算法
  8. 截屏没有了_华为手机居然有6种截屏花招,很多人不知道,你会用哪几种?
  9. 等级考试(二):二级C++---宏观把控
  10. VB.NET中DataGridView控件
  11. android 使用画布实现电子签名板功能并保存到本地
  12. 手把手一步步用DataGridView 控件编写属于自己的日历
  13. 电力拖动自动控制系统_一、自动化专业电气工程及其自动化
  14. 仅需一行代码,小白也可以制作自己的专属二维码!
  15. android反编译脱壳,Android脱壳圣战之---如何脱掉爱加密家的保护壳
  16. 【精】HDFS Balancer原理、参数详解
  17. 完美解决:*.vmx是由VMware产品创建,但该产品与此版VMware workstation不兼容因此无法使用…
  18. 到底cms企业建站系统是什么?为什么要做cms系统?
  19. 如何刷鸿蒙OS,普通安卓手机如何刷鸿蒙系统?
  20. 网站域名备案查询方法,批量查询网站域名备案的教程

热门文章

  1. TensorFlow 、Caffe等9大人工智能框架对比介绍
  2. 同步,异步,全双工,半双工区别!
  3. 检查两个时间段是否有时间重叠(允许重叠一部分时间不算重叠)
  4. java监听设计模式(java观察者设计模式)
  5. 字节瞧不上老程序员?我很慌…
  6. 易语言调用大漠插件对雷电模拟器进行后台绑定源码
  7. 前端开发之从零开始的uniapp(1):创建uni-app项目
  8. 苹果用计算机知道密码,苹果电脑钥匙串登录密码忘了怎么办
  9. 易语言编译和c语言,易语言独立编译的EXE文件问题
  10. 元宇宙 - 圈里的百科