Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计算每个网格点的值数组_Python_Numpy - Fatal编程技术网

Python 计算每个网格点的值数组

Python 计算每个网格点的值数组,python,numpy,Python,Numpy,我有一个函数,它依赖于一些参数,输出是数组。例如: def my_func(xs,param1,param2,param3): values = xs**param1 + xs*param2**2 + param3*xs return values 其中xs是一个具有值的数组。Suposse I还提供了每个参数的值列表: xs = np.arange(0,10,1) params1 = np.arange(5,10,1) params2 = np.arange(1,30,1)

我有一个函数,它依赖于一些参数,输出是数组。例如:

def my_func(xs,param1,param2,param3):
    values = xs**param1 + xs*param2**2 + param3*xs
    return values
其中xs是一个具有值的数组。Suposse I还提供了每个参数的值列表:

xs = np.arange(0,10,1)
params1 = np.arange(5,10,1)
params2 = np.arange(1,30,1)
params3 = np.arange(1,20,1)
我想为params1、params2和params3的每个可能组合计算我的_func的输出。其思想是能够计算卡方,并对输出进行贝叶斯分析。 我知道可以用嵌套for循环完成,但我想知道是否可以用mehsgrid完成。我尝试了以下操作,但失败了:

P1, P2, P3 = np.meshgrid(params1,params2,params3)
results = my_func(xs,P1,P2,P3)

      1 def my_func(xs,param1,param2,param3):
----> 2     values = xs**param1 + xs*param2**2 + param3*xs
      3 
      4 
      5 xs = np.arange(0,10,0.1)

      ValueError: operands could not be broadcast together with shapes (100,) (10,10,40) 
你知道怎么做吗(如果可以的话)

编辑: @unutbu的答案是有效的,但是没有,我还有一个关于其输出格式的问题。我已经改变了参数范围,因此可以很容易地解释

xs
作为
np.meshgrid
的参数传递后,
结果的形状为

np.shape(results)
(5, 10, 29, 19)
意思是: axis0是
param1
, axis1是
xs
, axis2是
param2
,并且 axis3是
param3

为什么输出中将
xs
放入轴=1?我希望命令遵循传递给
np.mesgrid
的内容,即
xs、param1、param2、param3

Edit2:


抱歉,我刚刚发现了np.meshgrid的“索引”键。如果有人在我计划使用时需要索引,请使用
np.meshgrig(arguments,index='ij')
Pass
xs
也作为
np.meshgrid
的参数:

import numpy as np

def my_func(xs,param1,param2,param3):
    values = xs**param1 + xs*param2**2 + param3*xs
    return values

xs = np.arange(0,10,0.1)
params1 = np.arange(1,2,0.1)
params2 = np.arange(1,2,0.1)
params3 = np.arange(1,5,0.1)

X, P1, P2, P3 = np.meshgrid(xs, params1, params2, params3, sparse=True, indexing='ij')
my_func(X, P1, P2, P3)

谢谢你的帮助,效果很好:)现在,我有一个关于输出格式的额外问题。我编辑了我的问题来解释它。