Python 如何编写从两个1D数组直接输出2D Numpy数组的函数?

Python 如何编写从两个1D数组直接输出2D Numpy数组的函数?,python,numpy,Python,Numpy,我创建了两个numpy 1D阵列 x1 = np.linspace(0, 1, 5) x2 = np.linspace(0, 10, 5) 我写了一个函数 def myfoo(x1,x2): return x1**2+x1*x2+x2**2 要获得2D numpy数组,我使用以下代码: y=np.empty((x1.size,x2.size)) for a in range(0,x2.size): y[a]=myfoo(x1,x2[a]) 我想知道是否可以编写一个函数,直接

我创建了两个numpy 1D阵列

x1 = np.linspace(0, 1, 5)
x2 = np.linspace(0, 10, 5)
我写了一个函数

def myfoo(x1,x2):
    return x1**2+x1*x2+x2**2
要获得2D numpy数组,我使用以下代码:

y=np.empty((x1.size,x2.size))
for a in range(0,x2.size):
    y[a]=myfoo(x1,x2[a])
我想知道是否可以编写一个函数,直接输出这个2D数组。我只是想知道是否有可能编写
y=myfoo2(x1,x2)
而不是上面的三行代码

我知道我可以按照注释中的建议将这些行插入函数中。但是,我想知道它是否存在于Numpy或Python“某物”(函数、运算符等)中,比如两个向量的数学并矢积(即,从两个大小为m,n的1D向量,此操作给出大小为m x n的矩阵)

谢谢你的回答

myfoo(x1[:,None], x2). x1[:,None]*x2

生成一个(5,5)数组。

为什么不将有问题的行定义为一个函数,返回2D数组并从代码中的其他地方调用它?@esqew。这不是一个真正的问题。这是好奇心。我知道可以编写
y=myfoo(x1,x2)
其中x1,x2和y是1D数组和
myfoo(x1,x2):。。例如,返回x2**2+3*x1
。所以我想知道是否有一种语法可以对2D数组执行类似的操作。
myfoo(x1[:,None],x2)
x1[:,None]*x2
生成一个(5,5)数组。关键词是
广播
。作为
numpy
用户,应该成为第二天性@hpaulj。谢谢你的回答。至少,一个好答案!!!我在读这些主题:广播,ufunc,矢量化。。。还有
for
循环在性能方面的问题,正如我在问题中所做的那样。你有什么建议我的链接吗?@esqew。如果可以的话,请看hpaulj的答案。非常感谢你的回答。好极了,没有什么可以改变的。甚至,我用
%timeit
在更复杂的示例上测试了性能,性能更好。完美答案。