我正在编写一个代码,其中必须多次在for循环中使用不同的参数调用同一函数。此函数返回四个变量,我想将它们保存在numpy array
(矩阵)中,以便以后进行绘制。
例如,假设我要为y = ax
的{{1}}的不同值评估函数y = x/a
,y = ax^2
,y = x^2/a
和a
1}}。我创建了一个Python函数来评估这四个不同的函数,我们将它们称为x = [0, 10]
,y1
,y2
和y3
。我为此做一个for循环,每个变量将是一个y4
,每一列都是一个特定值numpy array
,每一行都是一个特定值a
。事实是,我需要在循环之前初始化变量,而我找不到一种简单,漂亮且pythonic的方式来实现它。
x
我只是想找到一种更好的方法来初始化import numpy as np
def func(x, a):
y1 = a*x
y2 = x/a
y3 = a*x**2
y4 = x**2/a
return y1, y2, y3, y4
x = np.arange(0, 11)
a = np.array([1, 2, 3, 4])
y1 = np.zeros((len(x), len(a)))
y2 = np.zeros((len(x), len(a)))
y3 = np.zeros((len(x), len(a)))
y4 = np.zeros((len(x), len(a)))
for i in range(len(a)):
y1[:, i], y2[:, i], y3[:, i], y4[:, i] = func(x, a[i])
,y1
,y2
和y3
。当然,我欢迎任何其他建议,因为我来自Matlab,所以这可能不是用Python做到这一点的最佳方法。
答案 0 :(得分:0)
使用理解力并解压:
y1, y2, y3, y4 = (np.zeros((len(x), len(a))) for _ in range(4))