Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/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 将x和y数组的所有组合馈送到函数f(x,y)_Python_Numpy_Spyder - Fatal编程技术网

Python 将x和y数组的所有组合馈送到函数f(x,y)

Python 将x和y数组的所有组合馈送到函数f(x,y),python,numpy,spyder,Python,Numpy,Spyder,刚刚接触python,并试图自学python语言。我了解R和SAS的基本知识,但我仍在学习如何操作数组,并学习spyder中的基本python 我非常希望您能帮助我将x和y都输入函数f(x,y)(为了简单起见,例如sin(xy)) 通常在R中,我会通过扩展x和y的值来创建一个数据框,以创建每一个组合(每行唯一的x和y),然后通过我的函数运行这些行,并在数据框中附加一个新列,并使用晶格等绘制等高线图 对于相同的函数f(x,y)=z=sin(x,y),我在python中尝试过 x = np.lins

刚刚接触python,并试图自学python语言。我了解R和SAS的基本知识,但我仍在学习如何操作数组,并学习spyder中的基本python

我非常希望您能帮助我将x和y都输入函数f(x,y)(为了简单起见,例如sin(xy))

通常在R中,我会通过扩展x和y的值来创建一个数据框,以创建每一个组合(每行唯一的x和y),然后通过我的函数运行这些行,并在数据框中附加一个新列,并使用晶格等绘制等高线图

对于相同的函数f(x,y)=z=sin(x,y),我在python中尝试过

x = np.linspace(0, 1, 100)
y = np.linspace(-1, 11, 100)
z= np.equ(x,y)
这显然不起作用,但我真的不知道怎么做

尝试从操作以下代码后尝试此操作::

谢谢你的帮助

在这种情况下需要使用。它可用于生成包含所有可能组合的列表

例如,如果
A=[1,2]
B=[3,4]

itertools.product
将返回一个可存储在如下数组中的iterable

C = list(itertools.product(A, B))
# C = [(1,3), (1,4), (2,3), (2,4)]
如果您使用的是接受两个参数的,请使用以下命令:

x, y = np.meshgrid(np.linspace(0, 1, 5), np.linspace(-1, 11, 5))
r = np.equal(x, y)
如果您使用自己的函数,该函数接受两项的一个参数-(x,y)或[x,y]…:

def f(one_d_array):
    return one_d_array[0] == one_d_array[1]
从meshgrid连接x和y

q = np.concatenate((x[...,None],y[...,None]), 2)
然后使用

如果您使用的是您自己的函数,该函数接受x和y参数,请使用从meshgrid获得的数组

def f1(x, y):
    '''Returns 4x^2 + 2y^2'''
    return 4*np.square(x) + 2*np.square(y)

f1(x, y)


如果数组较大,请尝试避免使用沿轴应用,方法是重新构造函数以处理整个数组而不是切片。

您可以尝试类似的操作。在这里,他们通过仔细创建xs和ys来创建x和y的组合。一种方法是创建长度
len(x)*len(y)
np.linspace
,然后通过取
%
(模数)和
//code>(除法)将两个列向量叠加到一个矩阵中对于这个数组的长度,一种方法是在两个索引列表上使用itertools.compositions。然后使用索引从数组中提取项目,并将其传递给函数感谢您的所有响应。我会试试这些,看看我能想出什么!非常感谢。我要和这个玩一玩。我真的很感激。只需使用list()而不是list comprehensionEdited,再看一看@user622
np.apply_along_axis(f, 2, q)
def f1(x, y):
    '''Returns 4x^2 + 2y^2'''
    return 4*np.square(x) + 2*np.square(y)

f1(x, y)