将 for 循环的所有输出存储在矩阵中 python

Storing all the outputs of for loop in a matrix python

from __future__ import division   
from math import *
import cmath   
import numpy as np

taup=3
eps = 0.000001;
i = 0;
del1 = 2*taup/150.;
x=[]
for tau in np.arange(-taup,taup,del1):
    i = i + 1;
    j = 0;
    fd = np.linspace(-5/taup,5/taup,151);
    val1 = 1. - abs(tau) / taup;
    val2 = pi * taup * (1.0 - abs(tau) / taup) * fd;
    x=np.hstack(abs( val1 * np.sin(val2+eps)/(val2+eps)))

我得到的输出 x 只是最后一次迭代输出,即 1x151。 但我希望所有迭代都存储在一个矩阵中(这里是 151x151)。 我无法正确获取最后一行

您可以将一维数组附加到 x,然后 vstack 它们:

    ...
    x.append(np.hstack(abs( val1 * np.sin(val2+eps)/(val2+eps))))

x = np.vstack(x)

或者,预先创建结果数组会更快:

taus = np.arange(-taup,taup,del1)
fd = np.linspace(-5/taup,5/taup,151);
x = np.empty((taus.size, fd.size))
for tau_i, tau in enumerate(taus):
# or: 
# for tau_i in range(taus.size):
#     tau = taus[tau_i]
    i = i + 1;
    j = 0;

    val1 = 1. - abs(tau) / taup;
    val2 = pi * taup * (1.0 - abs(tau) / taup) * fd;
    x[tau_i] = np.hstack(abs( val1 * np.sin(val2+eps)/(val2+eps)))

P.S。其实这段代码可以不用任何for个循环来写,就数组操作而言。这是给你的练习。