Python 如何避免使用循环构建numpy阵列。代码清理建议

Python 如何避免使用循环构建numpy阵列。代码清理建议,python,loops,numpy,Python,Loops,Numpy,我正在编写一些代码来生成一些模拟数据,但我知道如何构建这些数据的唯一方法是使用循环,理想情况下我希望避免这种情况 到目前为止,我的代码是这样的。 基本上,我需要对我的2d数组中的每一行应用一些不同的缩放,我目前正在使用循环 n_echelle = 70 n_obs_echelle = 20 px_echelle1 = np.random.uniform(0, 2048, size(n_echelle,n_obs_echelle)) theta_values = [] for i i

我正在编写一些代码来生成一些模拟数据,但我知道如何构建这些数据的唯一方法是使用循环,理想情况下我希望避免这种情况

到目前为止,我的代码是这样的。 基本上,我需要对我的2d数组中的每一行应用一些不同的缩放,我目前正在使用循环

n_echelle = 70
n_obs_echelle = 20

px_echelle1 = np.random.uniform(0, 2048, size(n_echelle,n_obs_echelle))





theta_values = []

for i in range(0,n_echelle):
    theta = np.array([-0.03**(0.5+(i/300)),10000-180*i**(0.92)])
    theta_values.append(theta)

theta_values = np.asarray(theta_values)






wl_echelle1 = []

for i in range(0,n_echelle):
    d = np.polyval(theta_values[i], px_echelle1[i])
    wl_echelle1.append(d)

wl_echelle1 = np.asarray(wl_echelle1)

后来我不得不做相反的事情,我在循环中做这一切似乎很荒谬

theta_values_reverse = []

for i in range(0,n_echelle):
    theta_reverse = np.array([-0.03**-(0.5+(i/300)),(0.03**-(0.5+i/300))*(10000-180*i**(0.92))])
    theta_values_reverse.append(theta_reverse)

theta_values_reverse = np.asarray(theta_values_reverse)


px_echelle2 = []

for i in range(0,n_echelle):
    d = np.polyval(theta_values_reverse[i], wl_echelle1[i])
    px_echelle2.append(d)


px_echelle2 = np.asarray(px_echelle2)


欢迎任何反馈/建议。谢谢

我希望这对你有所帮助

n_echelle = 70
n_obs_echelle = 20
px_echelle1 = np.random.uniform(0, 2048, size(n_echelle,n_obs_echelle))

wl_echelle1 = np.zeros(n_echelle)
i=np.arange(n_echelle)
theta_values = np.array([-0.03**(0.5+(i/300)),10000-180*i**(0.92)])

for ii in range(0,n_echelle):
    wl_echelle1[ii] = np.polyval(theta_values[:,ii], wl_echelle1[ii])
这将为θ值创建一个2x70数组。
我不熟悉polyval命令,我也不确定除了循环之外还有其他孤子。如果你发现什么,请告诉我

我不确定征求意见是否适合问答网站。这不是一个讨论论坛,当你问问题的时候,你可以选择询问建议