首页 > 编程语言 >R和Python的对应:outer()

R和Python的对应:outer()

时间:2023-05-14 20:11:51浏览次数:49  
标签:outer Python 0.5 frompyfunc np vectorize array 对应

相信大家做模拟时一定碰到过变量之间的这种相关结构:

\[\mathbf{\rho}=\left(\rho_{ij}\right)_{n\times n}=0.5^{|i-j|} \]

在模拟这个相关矩阵时,R中常用的函数便是outer()函数:

outer(X=1:3,Y=1:3,FUN=function(x,y){0.5^abs(x-y)})

那python中对应的操作是啥?关键就是要找到对应的outer操作,而这一操作在NumPy库的ufunc类(universal function)即可找到。
创建np.ufunc类有以下方式,一是通过NumPy的frompyfunc函数,二是通过Numba库的vectorize装饰器。就运行速度来讲,后者会比前者快得多
具体例子如下:

  • NumPy的frompyfunc函数
import numpy as np
pyfun = np.frompyfunc(lambda x,y: 0.5**abs(x-y), 2, 1) # '2'代表2个输入参数,'1'代表1个输出值
pyfun.outer(np.array([1, 2, 3]), np.array([1, 2, 3])).astype(np.float64)
  • Numba的vectorize装饰器
from numba import vectorize, float64, int32
import numpy as np
@vectorize([float64(int32, int32)])
def nbfun(x, y):
    return 0.5*abs(x-y)
nbfun.outer(np.array([1, 2, 3]), np.array([1, 2, 3]))

可以看到,这两种方法还是比较通用的,因为使用者可以自定义一些函数。
参考链接:

  1. Numpy库的frompyfunc
  2. Numba库的vectorize

标签:outer,Python,0.5,frompyfunc,np,vectorize,array,对应
From: https://www.cnblogs.com/Enjoy-Respect-9527/p/15860592.html

相关文章

  • 深入理解计算机网络:使用Python和Socket编程实现TCP_IP协议族
    本文将介绍如何使用Python和Socket编程实现TCP/IP协议族。TCP/IP协议族是互联网上使用最广泛的协议族之一,TCP协议和IP协议是其最核心的两个协议。在本文中,我们将分别介绍TCP协议和IP协议的基本原理,并使用Python和Socket编程实现它们。TCP协议TCP协议是一种面向连接的、可靠的传输协......
  • Python学习之十_paramiko的简单学习
    Python学习之十_paramiko的简单学习简介pywinrm是python用于连接访问windows的工具paramiko是python用于连接访问linux的工具ansible等工具很多也是基于类似的组件进行的处理连接不同的系统进行命令行的操作.paramiko的简介paramiko是用python语言写的一个模块,遵循......
  • 基于jeesite如何实现多tab页切换时,对应Form表单进行刷新?
    思路:点击tab切换时,触发form表单的submit请求,从而实现刷新效果1、给tab加id:<liclass="active"><ahref="#tab-1"id="prepareTab"data-toggle="tab">待办事项</a></li>2、增加一个查询按钮,发送submit请求,可以隐藏<buttontype="submit&quo......
  • python -- excel文件被重命名修改后缀为.csv后,使用pandas来读取时,仍会被识别为一个exc
     新建数据文件如c_data.xlsx(后缀为.xlsx),右键重命名,直接将文件后缀名一并修改,修改为“c_data.csv”读取文件里的数据data=pd.read_csv('E:/python_workspace/data_space/c_data.csv')发现报错信息如下:Traceback(mostrecentcalllast):File"E:/python_workspace/......
  • 关于Python解释器的多版本共存问题
    在日常开发项目时,总会用到多种不同版本的解释器,那如何切换解释器呢?不能卸载重装需求版本的解释器吧,如此原解释器内pip的模块也丢失掉了,那我们应该怎么做呢?首先我们要前往Python的官网:http://www.python.org然后就是安装解释器,在我的文件内安装了三款解释器,为了方便看,3.6.8的......
  • 【计算几何】Python求解覆盖N个点的最小圆
    目录题目地址代码Prompt题目地址https://ac.nowcoder.com/acm/contest/52826/D代码importsysimportmathdefeuclidean_distance(p1,p2):returnmath.sqrt((p1[0]-p2[0])**2+(p1[1]-p2[1])**2)defmake_circle(points):shuffled=list(points)......
  • Python代码:微网-预测+调度(多种预测算法以及强化学习调度算法)
    Python代码:微网-预测+调度(多种预测算法以及强化学习调度算法)关键词:光伏/负荷预测强化学习LSTM优化调度微网模型预测控制参考文档:《EnergyManagement和EconomicEvaluationofGrid-ConnectedMicrogridOperation》复现仿真平台:Python主要内容:该项目的目标是探索并网微......
  • python常用的时间模块之datetime模块
    一、基本类型1、date类datetime.date(2023,5,1) 2、time类datetime.time(12,20,20,10) 3、datetime类datetime.datetime(2023,5,1,12,20,20,10) 4、timedelta类datetime.timedelta(weeks=1,days=1,hours=1,minutes=1,seconds=1,microseconds=1)提......
  • Python学习之八_调用Outlook发送邮件以及调用远程windows上面的python
    Python学习之八_调用Outlook发送邮件以及调用远程windows上面的python摘要之前只有一个需求是发送加密邮件.之前一直是使用linux进行发送.但是总是无法发送加密邮件.最近学习python,发现可以使用python来调用outlook来发送邮件.这样就比较简单了.可以直接使用outlook的......
  • python安全攻防学习笔记一 语言基础篇
    1.列表python中创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如:l1=["你好",0,1,2,3,4,5,6,7,8,9,0]l2=["嘟嘟嘟嘟嘟","雪球来了"]列表中的数据可以进行增删改查,方法有:dell1[1]#删除指定的数据l1.append("我不好")#在末尾添加数据......