python 等值线 矢量化_Python矢量化

我写了一个函数来寻找值之间的相关性,如果x是一个值为1,2,3,4的列表,那么我必须找到所有可能的组合之间的相关性;笛卡尔积。在import numpy as np

def myfunc(x,y):

if x==y:

return 0.0

else:

return (max(np.exp(-.03*(abs(x-y)/min(x,y))),0.4))

func= np.vectorize(myfunc)

x=[1,2,3,4]

y=[1]

func(x,y)

结果是

^{pr2}$

我可以创建一个从1到4的Y值循环,得到4个数组输出,这将给我我需要的结果。但是,我希望避免一个循环,并在函数中同时传递X=[1,2,3,4]和Y=[1,2,3,4],这给了我x=[1,2,3,4]

y=[1,2,3,4]

array([ 0., 0., 0., 0.])

我知道在x和y列表值之间有1比1的比较,根据我的函数,结果是0。我的第一个问题是,当我只传递1y值y=[1]时,它会计算与x的所有4个值的相关性,但当我传递多个y值时,它不会执行相同的操作。我在这里遗漏了什么吗?在

我重新创建了我的函数,使用生成器在我的两个列表输入的函数中做叉积,但是它给了我一个我无法解码的错误。请检查我的代码。在def myfunc(x,y):

gen= ((a, b) for a in x for b in y)

for u, v in gen:

if u==v:

return 0.0

else:

return (max(np.exp(-.03*(abs(u-v)/min(u,v))),0.4))

func= np.vectorize(myfunc)

x=[1,2,3,4]

y=[1,2,3,4]

func(x,y)

File "", line 2, in myfunc

gen= ((a, b) for a in x for b in y)

TypeError: 'numpy.int32' object is not iterable

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值