Python 将x和y数组的所有组合馈送到函数f(x,y)
刚刚接触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中尝试过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
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)