我正在尝试在for循环中填充3D数组。
我的问题是双重的
问题1:我一直覆盖上一个条目,只剩下最后一个循环中的值。
问题2:我一直在使用np.empty初始化我的3D数组,但是意识到它输入的数字非常小,使我的结果出现偏差。因此,我相信我应该改用np.zeros,但是我不确定如何为此设置代码。
问题1:我目前在for循环中使用np.append,但实际上似乎并没有附加每个循环,只是最近一次运行。
问题2:对于np.empty问题,我尝试对数字进行四舍五入(这是可行的,但我认为这可能会影响结果的精度)。 -我也曾尝试初始化零数组,但意识到我无法附加零,并且试图填充时碰到墙。
代码:
z = np.arange(Z_min,Z_max,Z_increment)
MagPearmbObject = np.arange(0,100,25)
Metrics_array= np.empty((len(z),len(MagPearmbObject),5))
for m in range(len(z)):
for k in range(len(MagPearmbObject)):
min_TF = np.min(TotalFieldMagnitude[m,::,::,k])
max_TF = np.max(TotalFieldMagnitude[m,::,::,k])
dipole = max_TF_temp - min_TF_temp
np.append(Metrics_array,z[m],MagPearmbObject[k],max_TF,min_TF,dipole),)
基本上,我想得到一个3个z层(在垂直轴上)的3D数组,然后每个2D层将有4列(磁导率,max_TF,min_TF,偶极子)。