gpt4 book ai didi

python - 将二维数组组合成一个三维数组

转载 作者:行者123 更新时间:2023-11-28 22:57:46 31 4
gpt4 key购买 nike

我正在定义一个将返回 3 维网格的函数。在此期间,我使用了一个已经定义的函数,该函数返回一个二维数组。我想在迭代期间加入这些 2-d 数组以形成 3-d,但我查看了 meshgrid()、dstack()、concatenate() 之类的函数,但似乎无法使它们中的任何一个都适合进入代码。

该程序模拟来自二维阵列上的点源的波的传播,而三维阵列显示介质的位移在波长范围内如何变化。

def make_wave_snapshot(size,wavelength,phase):
waves_array = np.zeros((size,size),np.float)
if size%2==0:
for y in range(size):
for x in range(size):
r = math.hypot((size/2 - x - 0.5),(size/2 - y - 0.5))
d = np.sin((2*math.pi*r/wavelength)-phase)/np.sqrt(r)
waves_array[y,x] = d
dp.display_2d_array(waves_array) #This is in another module altogether
return waves_array #Displays array showing values
else:
return 'Please use integer of size.'

def make_wave_sequence(size,wavelength,nsteps):
waves_sequence = np.zeros((nsteps,size,size),np.float)
if nsteps%1==0:
for z in range(nsteps):
make_wave_snapshot(size,wavelength,(2*math.pi*z/nsteps))
waves_sequence = ???
return waves_sequence #Displays array showing values
else:
return 'Please use positive integer for number of steps'

问题是将“wave_array”转变为“wave_sequence”。如果您编写任何代码,将不胜感激。非常感谢!

最佳答案

如果我理解正确的话,你有一个三维数组,类似于:

wave = np.zeros((2, 2, 2), np.float)

([[[0., 0.],
[0., 0.]],
[[0., 0.],
[0., 0.]]])

你想插入一个二维数组,从你的函数返回,如:

([[ 1., 2.],
[ 3., 4.]])

这样你的 3D 数组现在是:

([[[1., 2.],
[3., 4.]],
[[0., 0.],
[0., 0.]]])

for 循环的第一次迭代之后。如果这是正确的,那么它实际上非常简单,而且您已经完成了大部分工作。只要您选择正确的条目,您就可以将一个“元素”分配给您的 3D 数组,它是一个 2D 数组:

for z in range(nsteps):
waves_sequence[z] = make_wave_snapshot(size,wavelength,(2*math.pi*z/nsteps))

关于python - 将二维数组组合成一个三维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14444640/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com